Реализуй функцию (по типу pipe/compose), которая при первом вызове принимает набор функций, а при втором вызове — число, и последовательно применяет переданные функции к этому числу, передавая результат предыдущей функции в следующую. Например, функция inc, вложенная несколько раз, должна последовательно увеличивать число.

Для pipe функции выполняются слева направо: reduce передаёт накопленный результат следующей функции. Без функций возвращается исходное число.

Короткий ответ

Что ответить на собеседовании

Для pipe функции выполняются слева направо: reduce передаёт накопленный результат следующей функции. Без функций возвращается исходное число.

Подробный разбор

Ответ с пояснениями

Для pipe функции выполняются слева направо: reduce передаёт накопленный результат следующей функции. Без функций возвращается исходное число.

Вариант для синхронных унарных функций:

const pipe = (...fns) => value =>
  fns.reduce((result, fn) => fn(result), value);

const inc = x => x + 1;
pipe(inc, inc, inc)(2); // 5
pipe()(2); // 2

compose обычно применяет функции справа налево и использует reduceRight. Асинхронная цепочка требует отдельного контракта с await или Promise, а не этого синхронного варианта.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее