220

私はこれを持っていると言う

imageList = [100,200,300,400,500];

それは私に与えます

[0]100 [1]200

JavaScript で値を含むインデックスを返す方法はありますか?

つまり、 200のインデックスが必要な場合、 1が返されます。

4

12 に答える 12

349

使用できますindexOf

var imageList = [100,200,300,400,500];
var index = imageList.indexOf(200); // 1

配列内に値が見つからない場合は -1 が返されます。

于 2011-09-08T10:49:35.293 に答える
91

オブジェクト配列mapの場合indexOf:

var imageList = [
   {value: 100},
   {value: 200},
   {value: 300},
   {value: 400},
   {value: 500}
];

var index = imageList.map(function (img) { return img.value; }).indexOf(200);

console.log(index);


最新のブラウザーでは、次を使用できますfindIndex

var imageList = [
   {value: 100},
   {value: 200},
   {value: 300},
   {value: 400},
   {value: 500}
];

var index = imageList.findIndex(img => img.value === 200);

console.log(index);

ES6 の一部であり、 Chrome、FF、Safari、および Edge でサポートされています

于 2016-05-17T10:57:47.970 に答える
18

jQuery の関数 jQuery.inArrayを使用する

jQuery.inArray( value, array [, fromIndex ] )
(or) $.inArray( value, array [, fromIndex ] )
于 2013-03-10T04:20:34.707 に答える
10

indexOf を使用する

imageList.indexOf(200)
于 2011-09-08T10:50:55.137 に答える
8

どうindexOfですか?

alert(imageList.indexOf(200));
于 2011-09-08T10:51:51.987 に答える
7

Array.indexOf一部のバージョンの Internet Explorer では動作しません - ただし、別の方法がたくさんあります ... この質問 / 回答を参照してください:配列に JavaScript のオブジェクトが含まれているかどうかを確認するにはどうすればよいですか?

于 2011-09-08T10:55:36.363 に答える
6

リストがそれほど長くない場合、これが私が知っている最善の方法です。

function getIndex(val) {
    for (var i = 0; i < imageList.length; i++) {
        if (imageList[i] === val) {
            return i;
        }
    }
}

var imageList = [100, 200, 300, 400, 500];
var index = getIndex(200);
于 2015-03-21T07:59:42.473 に答える