Di 'che ho questo
imageList = [100,200,300,400,500];
Il che mi dà
[0]100 [1]200
eccetera.
Esiste un modo in JavaScript per restituire l'indice con il valore?
Cioè voglio l'indice per 200 , mi viene restituito 1 .
Di 'che ho questo
imageList = [100,200,300,400,500];
Il che mi dà
[0]100 [1]200
eccetera.
Esiste un modo in JavaScript per restituire l'indice con il valore?
Cioè voglio l'indice per 200 , mi viene restituito 1 .
Risposte:
Puoi usare indexOf
:
var imageList = [100,200,300,400,500];
var index = imageList.indexOf(200); // 1
Otterrai -1 se non riesce a trovare un valore nella matrice.
Per gli oggetti array utilizzare map
con 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);
Nei browser moderni è possibile utilizzare findIndex
:
var imageList = [
{value: 100},
{value: 200},
{value: 300},
{value: 400},
{value: 500}
];
var index = imageList.findIndex(img => img.value === 200);
console.log(index);
Fa parte di ES6 e supportato da Chrome, FF, Safari e Edge
Utilizzare la funzione jQuery jQuery.inArray
jQuery.inArray( value, array [, fromIndex ] )
(or) $.inArray( value, array [, fromIndex ] )
Ecco un altro modo per trovare l'indice di valore in array complessi in javascript. Spero davvero di aiutare qualcuno. Supponiamo di avere un array JavaScript come segue,
var studentsArray =
[
{
"rollnumber": 1,
"name": "dj",
"subject": "physics"
},
{
"rollnumber": 2,
"name": "tanmay",
"subject": "biology"
},
{
"rollnumber": 3,
"name": "amit",
"subject": "chemistry"
},
];
Ora, se abbiamo un requisito per selezionare un oggetto particolare nella matrice. Supponiamo di voler trovare un indice dello studente con il nome Tanmay.
Possiamo farlo iterando attraverso l'array e confrontando il valore in una determinata chiave.
function functiontofindIndexByKeyValue(arraytosearch, key, valuetosearch) {
for (var i = 0; i < arraytosearch.length; i++) {
if (arraytosearch[i][key] == valuetosearch) {
return i;
}
}
return null;
}
Puoi utilizzare la funzione per trovare l'indice di un particolare elemento come di seguito,
var index = functiontofindIndexByKeyValue(studentsArray, "name", "tanmay");
alert(index);
Array.indexOf
non funziona in alcune versioni di Internet Explorer - ci sono molti modi alternativi per farlo però ... vedi questa domanda / risposta: Come posso verificare se un array include un oggetto in JavaScript?
È possibile utilizzare una ES6
funzione Array.prototype.findIndex
.
MDN dice :
Il
findIndex()
metodo restituisce l'indice del primo elemento dell'array che soddisfa la funzione di test fornita. Altrimenti viene restituito -1.
var fooArray = [5, 10, 15, 20, 25];
console.log(fooArray.findIndex(num=> { return num > 5; }));
// expected output: 1
Trova un indice per proprietà dell'oggetto.
Per trovare un indice per proprietà dell'oggetto:
yourArray.findIndex(obj => obj['propertyName'] === yourValue)
Ad esempio, esiste un tale array:
let someArray = [
{ property: 'OutDate' },
{ property: 'BeginDate'},
{ property: 'CarNumber' },
{ property: 'FirstName'}
];
Quindi, il codice per trovare un indice della proprietà necessaria è simile al seguente:
let carIndex = someArray.findIndex( filterCarObj=>
filterCarObj['property'] === 'CarNumber');
Ecco la mia opinione su di esso, sembra che la maggior parte delle soluzioni delle persone non controlli se l'articolo esiste e rimuove valori casuali se non esiste.
Prima controlla se l'elemento esiste cercando il suo indice . Se esiste, rimuovilo dal suo indice usando il metodo splice
elementPosition = array.indexOf(value);
if(elementPosition != -1) {
array.splice(elementPosition, 1);
}
Matrice di riferimento:
var array = [
{ ID: '100', },
{ ID: '200', },
{ ID: '300', },
{ ID: '400', },
{ ID: '500', }
];
Utilizzando filter
e 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]);
Scorrendo ciclicamente ogni elemento dell'array usando 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);
Nota : include la funzione è un metodo di istanza semplice sull'array e aiuta a trovare facilmente un elemento nell'array (incluso NaN a differenza di indexOf)