Estive navegando um pouco tentando encontrar uma maneira eficiente de fazer isso, mas não chegamos a lugar algum. Eu tenho uma matriz de objetos que se parece com isso:
array[i].id = some number;
array[i].name = some name;
O que eu quero fazer é encontrar os INDEXES dos objetos em que id é igual a, por exemplo, um de 0,1,2,3 ou 4. Suponho que eu poderia fazer algo como:
var indexes = [];
for(i=0; i<array.length; i++) {
(array[i].id === 0) ? { indexes[0] = i }
(array[i].id === 1) ? { indexes[1] = i }
(array[i].id === 2) ? { indexes[2] = i }
(array[i].id === 3) ? { indexes[3] = i }
(array[i].id === 4) ? { indexes[4] = i }
}
Enquanto isso funcionaria, parece muito caro e lento (para não mencionar feio), especialmente se o array.length puder ser grande. Alguma idéia de como melhorar isso um pouco? Eu pensei em usar array.indexOf de alguma forma, mas não vejo como forçar a sintaxe. este
array.indexOf(this.id === 0);
por exemplo, retorna indefinido, como provavelmente deveria. Desde já, obrigado!
Array.prototype.findIndex()
no ECMAScript 2015. A resposta aceita foi impressionante.