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を使用できるようになります。