これを持っていると言う
imageList = [100,200,300,400,500];
それは私に与えます
[0]100 [1]200
等
JavaScriptで値を持つインデックスを返す方法はありますか?
つまり、200のインデックスが必要です。1が返されます。
これを持っていると言う
imageList = [100,200,300,400,500];
それは私に与えます
[0]100 [1]200
等
JavaScriptで値を持つインデックスを返す方法はありますか?
つまり、200のインデックスが必要です。1が返されます。
回答:
使用できますindexOf
:
var imageList = [100,200,300,400,500];
var index = imageList.indexOf(200); // 1
配列に値が見つからない場合は-1が返されます。
Arrayオブジェクトを使用する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でサポートされています
jQueryの関数jQuery.inArrayを使用する
jQuery.inArray( value, array [, fromIndex ] )
(or) $.inArray( value, array [, fromIndex ] )
これは、JavaScriptの複雑な配列で値のインデックスを見つける別の方法です。確かに誰かを助けることを願っています。次のようなJavaScript配列があるとします。
var studentsArray =
[
{
"rollnumber": 1,
"name": "dj",
"subject": "physics"
},
{
"rollnumber": 2,
"name": "tanmay",
"subject": "biology"
},
{
"rollnumber": 3,
"name": "amit",
"subject": "chemistry"
},
];
次に、配列内の特定のオブジェクトを選択する必要がある場合。Tanmayという名前の学生のインデックスを検索するとします。
これは、配列を反復処理し、指定されたキーの値を比較することで実行できます。
function functiontofindIndexByKeyValue(arraytosearch, key, valuetosearch) {
for (var i = 0; i < arraytosearch.length; i++) {
if (arraytosearch[i][key] == valuetosearch) {
return i;
}
}
return null;
}
この関数を使用して、以下のように特定の要素のインデックスを見つけることができます。
var index = functiontofindIndexByKeyValue(studentsArray, "name", "tanmay");
alert(index);
Array.indexOf
Internet Explorerの一部のバージョンでは機能しません-しかし、それを行うには多くの代替方法があります...この質問/回答を参照してください:配列にJavaScriptのオブジェクトが含まれているかどうかを確認するにはどうすればよいですか?
ES6
関数を使用することが可能Array.prototype.findIndex
です。
この
findIndex()
メソッドは、指定されたテスト関数を満たす配列の最初の要素のインデックスを返します。それ以外の場合は-1が返されます。
var fooArray = [5, 10, 15, 20, 25];
console.log(fooArray.findIndex(num=> { return num > 5; }));
// expected output: 1
オブジェクトプロパティでインデックスを検索します。
オブジェクトプロパティでインデックスを検索するには:
yourArray.findIndex(obj => obj['propertyName'] === yourValue)
たとえば、次のような配列があります。
let someArray = [
{ property: 'OutDate' },
{ property: 'BeginDate'},
{ property: 'CarNumber' },
{ property: 'FirstName'}
];
次に、必要なプロパティのインデックスを検索するコードは次のようになります。
let carIndex = someArray.findIndex( filterCarObj=>
filterCarObj['property'] === 'CarNumber');
これが私の見解です、ほとんどの人々のソリューションはアイテムが存在するかどうかをチェックせず、存在しない場合はランダムな値を削除するようです。
まず、要素のインデックスを探して、要素が存在するかどうかを確認します。存在する場合は、spliceメソッドを使用してインデックスで削除します
elementPosition = array.indexOf(value);
if(elementPosition != -1) {
array.splice(elementPosition, 1);
}
参照配列:
var array = [
{ ID: '100', },
{ ID: '200', },
{ ID: '300', },
{ ID: '400', },
{ ID: '500', }
];
使用するfilter
とindexOf
:
var in_array = array.filter(function(item) {
return item.ID == '200' // look for the item where ID is equal to value
});
var index = array.indexOf(in_array[0]);
を使用して配列内の各項目をループするindexOf
:
for (var i = 0; i < array.length; i++) {
var item= array[i];
if (item.ID == '200') {
var index = array.indexOf(item);
}
}
// Instead Of
var index = arr.indexOf(200)
// Use
var index = arr.includes(200);
注意:Include関数は配列の単純なインスタンスメソッドであり、項目が配列内にあるかどうかを簡単に見つけるのに役立ちます(indexOfとは異なりNaNを含む)。