RxJS中的排序数组

时间:2015-10-22 09:55:19

标签: javascript reactive-programming rx-java rxjs

RxJava有一个方法toSortedList(Comparator comparator),它将对象流转换为由比较器排序的对象列表。

如何在JavaScript中使用RxJS实现相同的功能,并获得带有对象流的Observable以发出已排序的数组/列表?

3 个答案:

答案 0 :(得分:6)

您可以使用以下代码:

Rx.Observable.of(5,8,7,9,1,0,6,6,5).toArray().map(arr=>arr.sort()).subscribe(x=>console.log(x))

答案 1 :(得分:0)

使用 rxjs@7.1.0

import { of } from 'rxjs';
import { map, toArray } from 'rxjs/operators';

const obs = of(5,8,7,9,1,0,6,6,5).pipe(
  toArray(),
  map(arr=> arr.sort((a,b) => a - b)
);


obs.subscribe(x => {
  console.log(x);
});

输出 [0, 1, 5, 5, 6, 6, 7, 8, 9]

答案 2 :(得分:-1)

我不熟悉哪些RxJS运算符可用,但您可以通过映射/ doOnNext获取toSortedList行为并手动调用sort:

source.toList().map(v -> { Collections.sort(v, comparator); return v; })...
source.toList().doOnNext(v -> Collections.sort(v, comparator))...