配列内に値が最初に見つかったインデックス番号の取得
とある配列の値に任意の値を検索し、最初に見つかったインデックス番号を取得するには、array.indexOf
メソッドを使用します。
ただし、IEの場合、indexOfで配列を扱えるようになったのはIE9以降なので、indexOfメソッドを使用しない場合の方法も後にご紹介します。
indexOfでの取得方法
構文
var index = array.indexOf(search string, [from index]);
引数名 | 型 | 説明 | |
---|---|---|---|
第一引数 必須 |
search string | string | 検索する文字列 |
第一引数 | from index | string | 検索を開始するインデックス番号 |
戻り値
検索して見つかった位置のインデックス番号を、見つからなかった場合は-1を返します。
サンプルコード
JavaScript
var result = '',
arrayData1 = [1, 100, 'test', 'abc', [1, 2]],
arrayData2 = { a : 1, b : 2, c : { d : 3, e : 4}};
result = arrayData1.indexOf(100);
alert(result);
result = arrayData1.indexOf(2);
alert(result);
IE6~IE8に対応させる場合
IE6~IE8に対応させる場合は、次の関数を定義し、それを使用します。
関数定義
JavaScript
var inArray = function(searchValue, arrayData) {
if (typeof searchValue === 'undefined' || typeof arrayData !== 'object') return -1;
for (var key in arrayData) {
if (arrayData[key] === searchValue) return key;
}
return -1;
};
使い方
引数
引数名 | 型 | 説明 | |
---|---|---|---|
第一引数 必須 |
searchValue | string | 検索する文字列 |
第二引数 必須 |
arrayData | number | 対象の配列 |
戻り値
成功した場合は最初に見つかった位置のインデックス番号、見つからなかった場合は-1を返します。
サンプルコード
JavaScript
var arrayData1 = [1, 100, 'test', 'abc', [1, 2]],
arrayData2 = { a : 1, b : 2, c : { d : 3, e : 4}};
var result1 = inArray(100, arrayData1),
result2 = inArray(2, arrayData2);
alert(result1); // 1
alert(result2); // b