forEach の模倣
次のようなforEach
は、
forEach.js
array.forEach(body);
reduce
により一行で模倣できる。
simulation_forEach.js
array.reduce((_, ...args) => void body(...args), void 0);
reduce の模倣
逆に、次のようなreduce
も、
reduce.js
const result1 = array.reduce(reducer, init);
forEach
により模倣できる。ただし、一行では模倣できない。
simulation_reduce.js
let acc = init;
array.forEach((...args) => {acc = reducer(acc, ...args)});
const result2 = acc;
用法用量を守って畳み込みましょう
forEach
は万能だけど、reduce
はそれにもまして万能なので、気をつけて使わないとやたら抽象的なコードになったりする。
reduce
を使うときは「他のメソッドで代替できないか」、「for
やwhile
で書いたほうがわかりやすくないか」、一度立ち止まって考えたい。