Уроки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. Используется для решения «пропустить или нет».
Что нужно сделать
- Внутри
pipeсначала добавьтеfilter(value => value % 2 === 0)— это оставит только чётные числа. - Запятая после первого оператора обязательна!
- Затем добавьте
map(value => value * 10). - Ожидаемый вывод:
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
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...