本記事では、JavaScriptで条件に一致した配列要素だけ取得するfilterメソッドの使い方について解説しています。
JavaScriptの学習におすすめ参考書
改訂3版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで
先輩くん
10万部突破したJavaScriptの本が大幅増補改訂し7年ぶりに発売されたよ!
後輩ちゃん
最新の基本文法から、開発に欠かせない応用トピックまで学ぶことが出来るよ!
綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!
filterメソッドの使い方
条件に一致した配列要素だけ取得したい場合は、filterメソッドを使用します。基本的な使い方は以下のとおりです。
let result = Array.filter((value,index,array) => /* 条件 */);
構文解説
- result:条件に一致した配列要素のみ返される
- Array:対象の配列
- value(第一引数):配列要素
- index(第二引数):インデックス番号(添え字)
- array(第三引数):対象の配列
コールバック関数に渡される、value(第一引数)・index(第二引数)・array(第三引数)の中身を確認してみましょう。
let numArr = [10, 20];
let result = numArr.filter((value, index, array) => {
console.log(`value:${value}\nindex:${index}\narray:${array}`);
});
/**
* value:10
* index:0
* array:10,20
*
* value:20
* index:1
* array:10,20
*/
コンソールログを確認すると、第一引数のvalueには配列要素が、第二引数のindexにはインデックス番号(添え字)が、第三引数のarrayには対象の配列が代入されていることが分かります。
実際に、filterメソッドを使用して条件に一致した配列要素だけ取得してみましょう。
let numArr = [10, 50, 30, 20, 40];
let result = numArr.filter((value) => 30 <= value);
console.log(result); // => [50, 30, 40]
コールバック関数内の処理は、配列要素が30以上か判定しています。30以上だった配列要素はresultに順に代入されていきます。コンソールログを確認すると、[50, 30, 40]のみが代入されており条件を満たしていない[10,20]は除外されていることが分かります。