Hi there! Are you looking for the official Deno documentation? Try docs.deno.com for all your Deno learning needs.

groupBy

deprecated
@deprecated

use the options parameter instead.

function groupBy<T, K>(key: (value: T) => K, options: BasicGroupByOptions<K, T>): OperatorFunction<T, GroupedObservable<K, T>>;
function groupBy<T, K, E>(key: (value: T) => K, options: GroupByOptionsWithElement<K, E, T>): OperatorFunction<T, GroupedObservable<K, E>>;
function groupBy<T, K extends T>(key: (value: T) => value is K): OperatorFunction<T, GroupedObservable<true, K> | GroupedObservable<false, Exclude<T, K>>>;
function groupBy<T, K>(key: (value: T) => K): OperatorFunction<T, GroupedObservable<K, T>>;
function groupBy<T, K>(
key: (value: T) => K,
element: void,
duration: (grouped: GroupedObservable<K, T>) => Observable<any>,
): OperatorFunction<T, GroupedObservable<K, T>>;
function groupBy<T, K, R>(
key: (value: T) => K,
element?: (value: T) => R,
duration?: (grouped: GroupedObservable<K, R>) => Observable<any>,
): OperatorFunction<T, GroupedObservable<K, R>>;
function groupBy<T, K, R>(
key: (value: T) => K,
element?: (value: T) => R,
duration?: (grouped: GroupedObservable<K, R>) => Observable<any>,
connector?: () => Subject<R>,
): OperatorFunction<T, GroupedObservable<K, R>>;
§
groupBy<T, K>(key: (value: T) => K, options: BasicGroupByOptions<K, T>): OperatorFunction<T, GroupedObservable<K, T>>
[src]

§Type Parameters

§Parameters

§
key: (value: T) => K
[src]
§
groupBy<T, K, E>(key: (value: T) => K, options: GroupByOptionsWithElement<K, E, T>): OperatorFunction<T, GroupedObservable<K, E>>
[src]

§Type Parameters

§Parameters

§
key: (value: T) => K
[src]
§
groupBy<T, K extends T>(key: (value: T) => value is K): OperatorFunction<T, GroupedObservable<true, K> | GroupedObservable<false, Exclude<T, K>>>
[src]

§Type Parameters

§
K extends T
[src]

§Parameters

§
key: (value: T) => value is K
[src]

§Return Type

§
OperatorFunction<T, GroupedObservable<true, K> | GroupedObservable<false, Exclude<T, K>>>
[src]
§
groupBy<T, K>(key: (value: T) => K): OperatorFunction<T, GroupedObservable<K, T>>
[src]

§Type Parameters

§Parameters

§
key: (value: T) => K
[src]
§
groupBy<T, K>(key: (value: T) => K, element: void, duration: (grouped: GroupedObservable<K, T>) => Observable<any>): OperatorFunction<T, GroupedObservable<K, T>>
[src]

§Type Parameters

§Parameters

§
key: (value: T) => K
[src]
§
element: void
[src]
§
duration: (grouped: GroupedObservable<K, T>) => Observable<any>
[src]
§
groupBy<T, K, R>(key: (value: T) => K, element?: (value: T) => R, duration?: (grouped: GroupedObservable<K, R>) => Observable<any>): OperatorFunction<T, GroupedObservable<K, R>>
[src]

§Type Parameters

§Parameters

§
key: (value: T) => K
[src]
§
element?: (value: T) => R optional
[src]
§
duration?: (grouped: GroupedObservable<K, R>) => Observable<any> optional
[src]
§
groupBy<T, K, R>(key: (value: T) => K, element?: (value: T) => R, duration?: (grouped: GroupedObservable<K, R>) => Observable<any>, connector?: () => Subject<R>): OperatorFunction<T, GroupedObservable<K, R>>
[src]

Groups the items emitted by an Observable according to a specified criterion, and emits these grouped items as GroupedObservables, one GroupedObservable per group.

When the Observable emits an item, a key is computed for this item with the key function.

If a GroupedObservable for this key exists, this GroupedObservable emits. Otherwise, a new GroupedObservable for this key is created and emits.

A GroupedObservable represents values belonging to the same group represented by a common key. The common key is available as the key field of a GroupedObservable instance.

The elements emitted by GroupedObservables are by default the items emitted by the Observable, or elements returned by the element function.

Examples

Group objects by id and return as array

import { of, groupBy, mergeMap, reduce } from 'rxjs';

of(
  { id: 1, name: 'JavaScript' },
  { id: 2, name: 'Parcel' },
  { id: 2, name: 'webpack' },
  { id: 1, name: 'TypeScript' },
  { id: 3, name: 'TSLint' }
).pipe(
  groupBy(p => p.id),
  mergeMap(group$ => group$.pipe(reduce((acc, cur) => [...acc, cur], [])))
)
.subscribe(p => console.log(p));

// displays:
// [{ id: 1, name: 'JavaScript' }, { id: 1, name: 'TypeScript'}]
// [{ id: 2, name: 'Parcel' }, { id: 2, name: 'webpack'}]
// [{ id: 3, name: 'TSLint' }]

Pivot data on the id field

import { of, groupBy, mergeMap, reduce, map } from 'rxjs';

of(
  { id: 1, name: 'JavaScript' },
  { id: 2, name: 'Parcel' },
  { id: 2, name: 'webpack' },
  { id: 1, name: 'TypeScript' },
  { id: 3, name: 'TSLint' }
).pipe(
  groupBy(p => p.id, { element: p => p.name }),
  mergeMap(group$ => group$.pipe(reduce((acc, cur) => [...acc, cur], [`${ group$.key }`]))),
  map(arr => ({ id: parseInt(arr[0], 10), values: arr.slice(1) }))
)
.subscribe(p => console.log(p));

// displays:
// { id: 1, values: [ 'JavaScript', 'TypeScript' ] }
// { id: 2, values: [ 'Parcel', 'webpack' ] }
// { id: 3, values: [ 'TSLint' ] }

§Type Parameters

§Parameters

§
key: (value: T) => K
[src]

A function that extracts the key for each item.

§
element?: (value: T) => R optional
[src]

A function that extracts the return element for each item.

§
duration?: (grouped: GroupedObservable<K, R>) => Observable<any> optional
[src]

A function that returns an Observable to determine how long each group should exist.

§
connector?: () => Subject<R> optional
[src]

Factory function to create an intermediate Subject through which grouped elements are emitted.

§Return Type

§

A function that returns an Observable that emits GroupedObservables, each of which corresponds to a unique key value and each of which emits those items from the source Observable that share that key value.