Di que tengo esto
imageList = [100,200,300,400,500];
Lo que me da
[0]100 [1]200
etc.
¿Hay alguna forma en JavaScript para devolver el índice con el valor?
Es decir, quiero el índice para 200 , me devuelven 1 .
Di que tengo esto
imageList = [100,200,300,400,500];
Lo que me da
[0]100 [1]200
etc.
¿Hay alguna forma en JavaScript para devolver el índice con el valor?
Es decir, quiero el índice para 200 , me devuelven 1 .
Respuestas:
Puedes usar indexOf
:
var imageList = [100,200,300,400,500];
var index = imageList.indexOf(200); // 1
Obtendrá -1 si no puede encontrar un valor en la matriz.
Para la matriz de objetos, use 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);
En los navegadores modernos puede usar findIndex
:
var imageList = [
{value: 100},
{value: 200},
{value: 300},
{value: 400},
{value: 500}
];
var index = imageList.findIndex(img => img.value === 200);
console.log(index);
Es parte de ES6 y es compatible con Chrome, FF, Safari y Edge
Utilice la función de jQuery jQuery.inArray
jQuery.inArray( value, array [, fromIndex ] )
(or) $.inArray( value, array [, fromIndex ] )
Aquí hay otra forma de encontrar el índice de valor en una matriz compleja en javascript. Espero ayudar a alguien de hecho. Supongamos que tenemos una matriz de JavaScript de la siguiente manera,
var studentsArray =
[
{
"rollnumber": 1,
"name": "dj",
"subject": "physics"
},
{
"rollnumber": 2,
"name": "tanmay",
"subject": "biology"
},
{
"rollnumber": 3,
"name": "amit",
"subject": "chemistry"
},
];
Ahora si tenemos el requisito de seleccionar un objeto particular en la matriz. Supongamos que queremos encontrar un índice de estudiante con el nombre Tanmay.
Podemos hacerlo iterando a través de la matriz y comparando el valor en la clave dada.
function functiontofindIndexByKeyValue(arraytosearch, key, valuetosearch) {
for (var i = 0; i < arraytosearch.length; i++) {
if (arraytosearch[i][key] == valuetosearch) {
return i;
}
}
return null;
}
Puede usar la función para encontrar el índice de un elemento particular como se muestra a continuación
var index = functiontofindIndexByKeyValue(studentsArray, "name", "tanmay");
alert(index);
Array.indexOf
no funciona en algunas versiones de Internet Explorer, aunque hay muchas formas alternativas de hacerlo ... vea esta pregunta / respuesta: ¿Cómo verifico si una matriz incluye un objeto en JavaScript?
Es posible usar una ES6
funciónArray.prototype.findIndex
.
MDN dice :
El
findIndex()
método devuelve el índice del primer elemento en la matriz que satisface la función de prueba proporcionada. De lo contrario, se devuelve -1.
var fooArray = [5, 10, 15, 20, 25];
console.log(fooArray.findIndex(num=> { return num > 5; }));
// expected output: 1
Encuentre un índice por propiedad de objeto.
Para buscar un índice por propiedad de objeto:
yourArray.findIndex(obj => obj['propertyName'] === yourValue)
Por ejemplo, hay una matriz de este tipo:
let someArray = [
{ property: 'OutDate' },
{ property: 'BeginDate'},
{ property: 'CarNumber' },
{ property: 'FirstName'}
];
Luego, el código para encontrar un índice de propiedad necesaria se ve así:
let carIndex = someArray.findIndex( filterCarObj=>
filterCarObj['property'] === 'CarNumber');
Aquí está mi opinión sobre esto, parece que la mayoría de las soluciones de la gente no comprueban si el elemento existe y elimina valores aleatorios si no existe.
Primero verifique si el elemento existe buscando su índice . Si existe, elimínelo por su índice utilizando el método de empalme
elementPosition = array.indexOf(value);
if(elementPosition != -1) {
array.splice(elementPosition, 1);
}
Matriz de referencia:
var array = [
{ ID: '100', },
{ ID: '200', },
{ ID: '300', },
{ ID: '400', },
{ ID: '500', }
];
Usando filter
y 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]);
Recorriendo cada elemento de la matriz 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);
Tenga en cuenta : la función Incluye es un método de instancia simple en la matriz y ayuda a encontrar fácilmente si un elemento está en la matriz (incluido NaN a diferencia de indexOf)