jQueryにreduceがなかったので書いた
jQueryには、普通の配列にも使えるeachやmapがあるのですが、残念なことに、畳み込み演算できるreduceがありません。というわけで、こんなことしました。
$.reduce = function(list, func, init){ var r = init; for(var i = 0; i < list.length; i++) { if(i == 0 && init == undefined) { r = list[i]; } else { r = func.call(r, list[i]); } } return r; };
これで、またさらに関数的にプログラミングできます。
$.reduce([1,2,3,4], function(e){ return this + e; }); // => 10 $.reduce([["<","<"],[">",">"]], function(e){ return this.replace(e[0], r[1]); }, ">v<"); // => ">v<"
あまり使う人はいないかもしれないけど、たったこれだけのコードなんだし、最初から入れておいてくれても良かったのに。reduceを直接使う機会は少ないけど、合成していろんな関数作る元になるんだけどなぁ。