(JS)reduce

ブログめっちゃサボった.

情緒不安定無気力状態が続いてたのでブログ書けなかった. 状態がそれほど良くなったわけじゃないんだけど,何か作業をするのがいいと思って書いている.

reduce

JSでreduceを書いてみた.関数型プログラミングで使われるアレだ. 車輪の再発明だっていうのはわかってる.(reduceは,lodash.jsにもECMA-262第5版等にもある) だけど,どんな感じで実装するのかなと興味がありやってみた.

function reduce(array, fun, initialValue) {
  var acc;
  var startIndex;
  if (initialValue !== undefined) {
    acc = initialValue;
    startIndex = 0;
  } else {
    acc = array[0];
    startIndex = 1;
  }
  for (var i = startIndex; i < array.length; i++) {
    acc = fun.apply(null, [acc, array[i]]);
  }
  return acc;
}

不十分なところがあると言えばあるとも言えるけどまあよし.

ところでreduceって使い所難しい.コードを実装し終わったら「あ,ここはreduceだったな」となることが多い.