JavaScript 配列を検索して存在チェックをする
JavaScript
で配列の中に指定した値が含まれているどうかの存在チェックをするにはindexOf
またはfind
を使用します。
indexOf
var arr = [1, 2, 3, 4, 1, 2];
console.log(arr.indexOf(2)); // 1
console.log(arr.indexOf(5)); // -1
指定した値が存在する場合は、最初に存在した要素のインデックスを返します。
存在しなかった場合は、-1
を固定で返します。
以下のように戻り値が-1
かどうかを判定して存在チェックを行います。
var arr = [1, 2, 3, 4, 1, 2];
if (arr.indexOf(5) === -1) {
// 存在しない場合の処理
console.log('5は配列に存在していません。');
} else {
// 存在する場合の処理
}
find
find
を使用すると、値の存在チェックだけではなく、複雑な条件による存在チェックも可能です。
var arr = [1, 2, 3, 4, 1, 2];
if (arr.find(function(val) {
return val === 2;
}) !== undefined) {
// arrに2が存在する
}
find
のパラメータで指定したfunction
を配列の要素を引数に1つずつ実行していきます。
function
の結果(return
値)がtrue
の最初の要素の値が取得されます。
結果がfalse
の場合はundefined
が取得されます。
var arr = [1, 2, 3, 4, 1, 2];
if (arr.find(function(val) {
return val > 2;
}) !== undefined) {
// arrに2より大きい要素が存在する
}
IE8以下の対応
IE
はfind
が使えないので、独自に実装することになります。
下記のリンクで紹介しているスクリプトを組み込めば同じようにfind
を使用できるようになります。