1.distinctUntilChanged
返回一个 Observable,它发出源 Observable 发出的所有项目,这些项目与上一个项目相比是不同的。
import { of } from 'rxjs';
import { distinctUntilChanged } from 'rxjs/operators';
of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4,4,5,5).pipe(
distinctUntilChanged(),
)
.subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4, 5
还可以传入比较参数
distinctUntilChanged<T, K>(compare?: (x: K, y: K) => boolean, keySelector?: (x: T) => K): MonoTypeOperatorFunction
<T>
调用可选的比较函数keySelector以测试某项是否与源中的上一项不同。
import { of } from 'rxjs';
import { distinctUntilChanged } from 'rxjs/operators';
of(
{ number: 2, name: 'zhangsan'},
{ number: 3, name: 'lisi'},
{ number: 5, name: 'lisi'},
{ number: 3, name: 'zhaoliu'},
).pipe(
distinctUntilChanged((p: any, q: any) => p.name === q.name),
)
.subscribe(x => console.log(x));
// { number: 2, name: 'zhangsan'}, { number: 3, name: 'lisi'},{ number: 3, name: 'zhaoliu'},