天天看点

rxjs里distinctUntilChanged operators的用法

Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item.

If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.

If a comparator function is not provided, an equality check is used by default.

测试代码:

of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4).pipe(

     distinctUntilChanged(),

   )

   .subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4

```比较。

注意distrinct是当前元素和前一个元素比较,而不是和整个Observable集合值比较。

![](https://upload-images.jianshu.io/upload_images/2085791-53313ee9d1efce7c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

传自定义比较函数的例子:

```typescript

of(

      { age: 4, name: 'Foo'},

      { age: 7, name: 'Bar'},

      { age: 5, name: 'Foo'},

      { age: 6, name: 'Foo'},

    ).pipe(

      distinctUntilChanged((p: Person, q: Person) => p.name === q.name),

    )

    .subscribe(x => console.log(x));

rxjs里distinctUntilChanged operators的用法

继续阅读