Array.filter の使い方

配列の中から必要な要素を抜き取りたい事は良くある。そんな時、filterメソッドが便利だ。
説明がCore JavaScript 1.5 Reference:Global Objects:Array:filter - MDCに載っているが、ちょっと複雑な例が載っていないので理解しにくい。

ちょっと複雑な例ってのはどういうのかというと、用例では要素の値が 10 以上と限定されているが、任意の数値に変えて判定させたい様な場合だ。

var array = [ 7, 8, 9, 10, 11, 12, 8, 20 ];

function isBigEnough( element, index, array ){
  return element >= this;
}
var hoge = array.filter( isBigEnough, 9 );
// hoge = [ 9, 10, 11, 12, 20 ];

element >= thisthisがミソ。このthisfilterメソッドで与えた第二引数のオブジェクトそのものとなる。

var array = [ 'abc', 'aBcd', 'ab', 'ABCDEFG', 'hogehogeABC' ];
function isContain( element, index, array ){
  return this.test( element );
}

var hoge = array.filter( isContain, /abc/i );
// hoge = [ 'abc', 'aBcd', 'ABCDEFG', 'hogehogeABC' ];

なんて事も可能だ。