配列内に値が最初に見つかったインデックス番号の取得

とある配列の値に任意の値を検索し、最初に見つかったインデックス番号を取得するには、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

JavaScript逆引きリファレンス一覧へ戻る