JavaScriptのfilterとmap
JavaScriptのArrayオブジェクトにはfilterとmapというメソッドがあります。
ECMAScript5で追加されたみたいなんですけど最近知りました(汗
filterは、LINQで言うWhereメソッドです。
こんな感じです。
var array = [1,2,3,4,5,6,7,8,9,10]; array.filter( function(x){ return x % 2 == 0} ) .forEach( function(x) { document.write(x); document.write("<br />"); });
結果はこうなります。
mapの方は、LINQで言うSelectメソッドです。
filterにつなげてみます。
var array = [1,2,3,4,5,6,7,8,9,10]; array.filter( function(x){ return x % 2 == 0} ) .map( function(x){ return x * x } ) .forEach( function(x) { document.write(x); document.write("<br />"); });
結果はこうなります。
for文などのループ処理よりは処理内容が明確になるし良いと思うんですが
実はこれらは、内部で新しい配列を作成して返しているので
効率的な観点で行くとよろしくないのです。
まあよほど大きな配列でなければ気にしなくてもいいんでしょうけどね
できれば外部イテレータにしてほしかった。