JavaScript 処理を連続で書きたいときの関数 pipe

関数fn1の結果を関数fn2に渡し、関数fn2の結果を関数fn3に渡し、関数fn3の結果を関数fn4に渡し、という処理を書きたいときの汎用的な関数。

const pipe = (value, ...fns) => {
  return fns.reduce((acc, fn) => {
    return fn(acc)
  }, value)
}

使い方

const plus = (x) => x + 1
const minus = (x) => x - 1
const double = (x) => x * 2
const triple = (x) => x * 3

const result = pipe(3, triple, minus, double, plus)
console.log(result) // 17