zukucode
主にWEB関連の情報を技術メモとして発信しています。

JavaScript 配列で条件にマッチする要素のみ検索して抽出する

JavaScriptの配列で、特定の条件にマッチする要素のみを検索して抽出するにはfilterを使います。

var arr = [1, 2, 3, 4, 5];

var isEven = function (element) {
  // 偶数の場合はtrue、奇数の場合はfalse
  return element % 2 === 0;
};
console.log(arr.filter(isEven)); // [2, 4]

filter(条件)で指定し、要素を1つずつ条件で抽出するかを判定していきます。条件の結果がtrueの場合の要素のみ抽出されます。

以下のように条件functionをそのまま引数として扱うこともできます。

var arr = [1, 2, 3, 4, 5];

console.log(arr.filter(function (element) {
  return element % 2 === 0;
})); // [2, 4]

オブジェクトの配列の場合

オブジェクトの配列でも同じように行うことができます。

var arr = [
  {
    name: '一郎',
    age: 25
  },
  {
    name: '二郎',
    age: 21
  },
  {
    name: '三郎',
    age: 18
  }
];

console.log(arr.filter(function (element) {
  return element.age >= 20;
})); // [ {name: "一郎", age: 25}, {name: "二郎", age: 21} ]

IE8以下の対応

IE8以下はfilterが使えないので、独自に実装することになります。

下記のリンクで紹介しているスクリプトを組み込めば同じようにfilterを使用できるようになります。

Array.prototype.filter() - JavaScript | MDN


関連記事