如何在一个可观察的查找和移动项目到集合的顶部

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在一个可观察的查找和移动项目到集合的顶部相关的知识,希望对你有一定的参考价值。

Rxjs的新手。我熟悉管道,过滤器,排序,地图等但不能解决这个问题。我需要在我的可观察返回数据中找到一个项目,并在显示之前将其移动到顶部。在这个例子中,Darth Vader是第4项,我想找到并移动到可观察数组/集合中的第0位或第1位。 https://stackblitz.com/edit/findandmakefirst

答案

像这样?

people$ = this.http.get('https://swapi.co/api/people/')
  .map((res:any) => {
    var _vader = res.results.splice(res.results.findIndex(x => x.name === 'Darth Vader'), 1);
    return [..._vader, ...res.results];
  });
另一答案
import { People } from './sw-people.model';

interface Results {
  count: Number,
  next: String,
  previous: string,
  results: People[],
}

@Injectable()
export class SwPeopleService {
    people$ = this.http.get('https://swapi.co/api/people/')
      .map((res: Results) => {
         return res.results.sort((a: People, b: People) => {
           return a.name === "Darth Vader" ? -1 : b.name === "Darth Vader" ? 1 : 0;
         });
        });

    constructor(private http: HttpClient) {} 
}

以上是关于如何在一个可观察的查找和移动项目到集合的顶部的主要内容,如果未能解决你的问题,请参考以下文章

在 Xamarin c# 中滚动到可观察集合中的选定项目

在列表顶部查找并移动特定项目

如何将可观察集合绑定到 xamarin 中的 flexlayout?

可观察的集合未更新

使用 LINQ 将项目移动到列表顶部

可观察的集合没有在 UI 更改时更新