BACK
Уроки15. filter: пропустить только нужное
Уроки · 15

15. filter: пропустить только нужное

filter — пропуск по условию

filter(predicate) работает как турникет. Каждое значение «спрашивает» функцию-предикат: «меня пропустить?». Если true — значение идёт дальше. Если false — значение отбрасывается, словно его и не было.

of(1, 2, 3, 4).pipe(filter(x => x % 2 === 0))
// 1 ✗ → 2 ✓ → 3 ✗ → 4 ✓
// Подписчик увидит: 2, 4

Порядок в pipe имеет значение

Операторы внутри pipe применяются сверху вниз. Если поставить filter перед map, то лишние значения отсеются раньше, и map не будет тратить время на них.

Глоссарий

  • Предикат — функция, возвращающая true или false. Используется для решения «пропустить или нет».

Что нужно сделать

  1. Внутри pipe сначала добавьте filter(value => value % 2 === 0) — это оставит только чётные числа.
  2. Запятая после первого оператора обязательна!
  3. Затем добавьте map(value => value * 10).
  4. Ожидаемый вывод: 20 → 40 → 60 (из 1..6 чётные — 2, 4, 6; каждое умножили на 10).
Решение spoiler · click to reveal
const { of, filter, map } = Rx;

const source$ = of(1, 2, 3, 4, 5, 6);

const result$ = source$.pipe(
  filter(value => value % 2 === 0),
  map(value => value * 10)
);

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