JavaScriptで配列の中から検索した値を取得・削除するfilterの使い方
JavaScriptで配列の要素を検索し、取得や削除を行えるfilter関数の使い方を解説します。
配列から条件で検索し、取得できるfilter関数の使い方
.filter()関数では、配列から検索してヒットした値を取得できます。
検索して見つからない場合は空の配列が返ります。
検索して取得に成功
サンプルコード
var array = [100, 200, 300, 400, 500]; //300以上のみ取得 var aryCheck = array.filter(value => value >= 300); console.log(aryCheck);
ない場合は空の配列が返る
サンプルコード
var array = [100, 200, 300, 400, 500]; //700以上のみ取得(存在しないため空の配列が返る) var aryCheck = array.filter(value => value >= 700); console.log(aryCheck);
検索と言っていますが、配列から設定した条件のものを削除したい、といった場合でも有効です。
filterとfindの違い
似た関数としてfind()という関数もあります。
- filter : 検索してヒットしたものを配列で返す
- find : 検索して最初にヒットした値を返す
filterは検索してヒットしたものを配列として返すので、例えばヒットした値を複数取得したい場合はfilterを使用しましょう。
「ただ値の有無が知りたい」というだけの場合でもfilterは有用ですが、その場合はfindでも良いでしょう。
filterで複数条件から検索する方法
filterは複数の条件を設定することが出来ます。
ただし、1行で省略した書き方ですと条件の数次第では見づらくなるので、{}で展開して複数行書けるようにすると見やすくなります。
valueには配列の値が入り、条件を満たした値の場合はtrueを返すようにしましょう。
サンプルコード
var array = [100, 200, 300, 400, 500, 11, 22, 33, 44, 55, 111, 222, 333, 444, 555]; //300未満かつ奇数の値を取得 var aryCheck = array.filter(value => { if(300 > value && value % 2 !== 0){ return true; } }); console.log(aryCheck);
filterで連想配列(オブジェクト)から検索する方法
オブジェクト入り配列の連想配列でも、filterによる取得・削除が出来ます。
サンプルコード
var array = [ {no : 1, name : 'Apple', price: 50}, {no : 2, name : 'Banana', price: 80}, {no : 3, name : 'Cherry', price: 50}, {no : 4, name : 'Orange', price: 60}, {no : 5, name : 'Melon', price: 100}, ]; //priceが80以上を取得 var aryCheck = array.filter(value => { if(value.price >= 80){ return true; } }); console.log(aryCheck);
filterで一致する文字列を取得する検索
文字列を部分一致、前方一致、後方一致で取得したい場合は、filterの条件でmatch関数を使用します。
部分一致(特定の文字列を含む)
サンプルコード
var array = ['fuga', 'hoge', 'piyo', 'yoga']; //配列から"og"と書かれた値を取得する var aryCheck = array.filter(value => value.match(/og/g)); console.log(aryCheck);
前方一致で検索
サンプルコード
var array = ['fuga', 'hoge', 'piyo', 'yoga']; //先頭がpiから始まる文字の値を配列内で検索し、新たな配列を生成 var aryCheck = array.filter(value => value.match(/^pi/g)); console.log(aryCheck);
後方一致で検索
サンプルコード
var array = ['fuga', 'hoge', 'piyo', 'yoga']; //後方がgaで終わる文字の値を配列内で検索し、新たな配列を生成 var aryCheck = array.filter(value => value.match(/ga$/g)); console.log(aryCheck);
以上、JavaScriptで配列の中から検索した値を取得・削除するfilterの使い方、でした。
ディスカッション
コメント一覧
まだ、コメントがありません