diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:26:46 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:43:56 -0700 |
| commit | e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch) | |
| tree | 06284a538a6008eca75051399e47db4e5d50301c /node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts | |
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts')
| -rw-r--r-- | node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts b/node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts new file mode 100644 index 0000000..b7c4593 --- /dev/null +++ b/node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts @@ -0,0 +1,75 @@ +import { distinctUntilChanged } from './distinctUntilChanged'; +import { MonoTypeOperatorFunction } from '../types'; + +export function distinctUntilKeyChanged<T>(key: keyof T): MonoTypeOperatorFunction<T>; +export function distinctUntilKeyChanged<T, K extends keyof T>(key: K, compare: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction<T>; + +/** + * Returns an Observable that emits all items emitted by the source Observable that + * are distinct by comparison from the previous item, using a property accessed by + * using the key provided to check if the two items are distinct. + * + * If a comparator function is provided, then it will be called for each item to + * test for whether that value should be emitted or not. + * + * If a comparator function is not provided, an equality check is used by default. + * + * ## Examples + * + * An example comparing the name of persons + * + * ```ts + * import { of, distinctUntilKeyChanged } from 'rxjs'; + * + * of( + * { 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' } + * ``` + * + * An example comparing the first letters of the name + * + * ```ts + * import { of, distinctUntilKeyChanged } from 'rxjs'; + * + * of( + * { age: 4, name: 'Foo1' }, + * { age: 7, name: 'Bar' }, + * { age: 5, name: 'Foo2' }, + * { age: 6, name: 'Foo3' } + * ).pipe( + * distinctUntilKeyChanged('name', (x, y) => 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' } + * ``` + * + * @see {@link distinct} + * @see {@link distinctUntilChanged} + * + * @param key String key for object property lookup on each item. + * @param compare Optional comparison function called to test if an item is distinct + * from the previous item in the source. + * @return A function that returns an Observable that emits items from the source + * Observable with distinct values based on the key specified. + */ +export function distinctUntilKeyChanged<T, K extends keyof T>( + key: K, + compare?: (x: T[K], y: T[K]) => boolean +): MonoTypeOperatorFunction<T> { + return distinctUntilChanged((x: T, y: T) => (compare ? compare(x[key], y[key]) : x[key] === y[key])); +} |
