Skip to content

Latest commit

 

History

History
83 lines (62 loc) · 3.04 KB

distinctUntilKeyChanged.md

File metadata and controls

83 lines (62 loc) · 3.04 KB

distinctUntilKeyChanged

Возвращает поток, который отправляет все элементы, отправляемые потоком, отличающиеся от предыдущих, используя свойство, доступ к которому осуществляется с помощью ключа, предоставленного для проверки отличий этих двух элементов.

Сигнатура

distinctUntilKeyChanged<T, K extends keyof T>(key: K, compare?: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction<T>distinctUntilKeyChanged<T, K extends keyof T>(key: K, compare?: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction<T>

Описание

Если предусмотрена функция компаратора, то каждому элементу будет необходимо проверить, должно ли это значение отправляться или нет.

Если функция компаратора не предусмотрена, то по умолчанию используется проверка на равенство.

Параметры

Название Описание
key Строковый ключ для поиска свойств объекта каждого элемента.
compare Опционально. По умл.: undefined.
Опциональная функция сравнения, вызываемая для проверки отличия нового элемента от предыдущего в источнике.

Примеры

Пример сравнения имён людей.

import { of } from 'rxjs';
import { distinctUntilKeyChanged } from 'rxjs/operators';
 
 interface Person {
    age: number,
    name: string
 }
 
of<Person>(
    { age: 4, name: 'Foo'},
    { age: 7, name: 'Bar'},
    { age: 5, name: 'Foo'},
    { age: 6, name: 'Foo'},
  ).pipe(
    distinctUntilKeyChanged('name'),
  )
  .subscribe(x => console.log(x));
 
// displays:
// { age: 4, name: 'Foo' }
// { age: 7, name: 'Bar' }
// { age: 5, name: 'Foo' }

Пример сравнения первых букв имён.

import { of } from 'rxjs';
import { distinctUntilKeyChanged } from 'rxjs/operators';
 
interface Person {
    age: number,
    name: string
 }
 
of<Person>(
    { age: 4, name: 'Foo1'},
    { age: 7, name: 'Bar'},
    { age: 5, name: 'Foo2'},
    { age: 6, name: 'Foo3'},
  ).pipe(
    distinctUntilKeyChanged('name', (x: string, y: string) => x.substring(0, 3) === y.substring(0, 3)),
  )
  .subscribe(x => console.log(x));
 
// displays:
// { age: 4, name: 'Foo1' }
// { age: 7, name: 'Bar' }
// { age: 5, name: 'Foo2' }

Полезные ссылки