BACK
ПрактикаReal-life: groupBy() тикеты по статусу
ПРАКТИКА · 42 · 練

Real-life: groupBy() тикеты по статусу

Сгруппируйте тикеты по status и выведите количество в каждой группе.

  1. Решите задачу в редакторе без длинной теории.
  2. Запустите проверку и сравните вывод с ожидаемым.
  3. Если застряли, откройте решение и перенесите подход в свой код.
Решение spoiler · click to reveal
const { from, groupBy, mergeMap, toArray, map } = Rx;

const tickets = [
  { status: 'open' },
  { status: 'closed' },
  { status: 'open' },
];

const result$ = from(tickets).pipe(
  groupBy(ticket => ticket.status),
  mergeMap(group$ => group$.pipe(
    toArray(),
    map(items => group$.key + ':' + items.length)
  ))
);

result$.subscribe(value => console.log(value));
script.ts // TypeScript
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...