JavaScriptで配列から値を検索し、取得や判定ができるfindの使い方
JavaScriptで配列の要素を検索し、判定を行う.find関数の使い方についてまとめました。
配列の検索し一致した値を取得できる.find()の使い方
配列の検索を行う場合は、.find()関数が便利です。
配列内に指定した値と一致する値があればそれを取得します。
複数一致する値があった場合は、最初に一致した値が取得されます。
すべて一致しなかった場合はundefinedが帰ってくるため、if文で条件分岐を持たせることが可能です。
一致する場合
サンプルコード
var array = [1, 10, 100, 1000, 1000];
//100を検索
var check = array.find(value => value === 100);
if(check){
console.log('hit');
}else{
console.log('found');
}一致しない場合
サンプルコード
var array = [1, 10, 100, 1000, 1000];
//2を検索(見つからない)
var check = array.find(value => value === 2);
if(check){
console.log('hit');
}else{
console.log('found');
}文字列も可
もちろん、文字列で構成された配列も検索できます。
サンプルコード
var array = ['fuga', 'hoge', 'piyo'];
var check = array.find(value => value === 'hoge');
if(check){
console.log('hit');
}else{
console.log('found');
}
findとfilterの違い
似た関数としてfilter()という関数もあります。
- filter : 検索してヒットしたものを配列で返す
- find : 検索して最初にヒットした値を返す
filterは検索してヒットした値を配列で返すので、複数の値を取得したい場合はfilterを使う必要があります。
単純に「検索した値があるかないか」を調べたい場合はfindでも良いでしょう。
部分一致で配列内を検索する方法(正規表現)
特定の文字が含まれていればhit扱いしたい場合は、正規表現のmatch関数を使用します。
部分一致
サンプルコード
var array = ['fuga', 'hoge', 'piyo']; //"og"という文字があれば一致(hoge)したものとする var check = array.find(value => value.match(/og/g)); console.log(check);
また、先頭で一致した箇所を調べる「前方一致」、末尾で一致した箇所を調べる「後方一致」もmatch関数で行えます。
前方一致で検索
サンプルコード
var array = ['fuga', 'hoge', 'piyo']; //先頭がfuから始まる文字の値を配列内で検索 var check = array.find(value => value.match(/^fu/g)); console.log(check);
後方一致で検索
サンプルコード
var array = ['fuga', 'hoge', 'piyo']; //後方がyoから始まる文字の値を配列内で検索 var check = array.find(value => value.match(/yo$/g)); console.log(check);
.find()で検索の判定に複数の条件を設定する方法
find関数で判定に複数の条件を指定して判定を行いたい場合は、条件式を複数持たせてあげればOKです。
1行だと識別しにくいので、{}で展開して複数行書けるようにすると見やすくなります。
サンプルコード
var array = [2, 5, 10, 15, 100, 500];
//10以下かつ奇数の判定
var check = array.find(value => {
if(10 >= value && value % 2 !== 0){
return true;
}
});
console.log(check);
.find()で連想配列の値を検索する方法
キーに文字が入る連想配列は、厳密にはオブジェクトなのでfindでの検索が出来ません。
そのため、一度キーと値を含んだ配列にmapで変換して、検索を行う必要があります。
サンプルコード
var obj = {
'Apple' : 50,
'Banana' : 80,
'Cherry' : 50,
'Orange' : 60,
'Melon' : 100,
};
//キーを含んだ配列に変換 オブジェクト⇒配列
var array = Object.keys(obj).map((k)=>({ key: k, price: obj[k] }));
//値段が100以上のものがあるかチェック
var check = array.find(value => value.price >= 100);
console.log(check.price);
.find()でオブジェクトが入った配列を検索する方法
find関数でオブジェクト入り配列も検索することが出来ます。
検索条件(下記のプログラムではvalue)にプロパティを指定することで、そのプロパティの条件を設定することが出来ます。
下記は、配列内に値段(price)が100円以上のものを取得する処理です。
サンプルコード
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が100以上
var check = array.find(value => value.price >= 100);
console.log(check);
以上、JavaScriptで配列から値を検索し、取得や判定ができるfindの使い方、でした。


ディスカッション
コメント一覧
まだ、コメントがありません