Em uma matriz de objetos, a maneira mais rápida de encontrar o índice de um objeto cujos atributos correspondem a uma pesquisa

Eu tenho surfado um pouco tentando encontrar uma maneira eficiente de fazer isso, mas não cheguei a lugar nenhum. Eu tenho uma matriz de objetos que se parece com isso:

<code>array[i].id = some number;
array[i].name = some name;
</code>

O que eu quero fazer é encontrar os ÍNDICES dos objetos onde id é igual a, por exemplo, um de 0,1,2,3 ou 4. Eu suponho que eu poderia fazer algo como:

<code>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 }
}
</code>

Enquanto isso funcionaria, parece ser muito caro e lento (para não mencionar feio), especialmente se array.length poderia ser grande. Alguma idéia de como enfeitar isso um pouco? Eu pensei em usar array.indexOf de alguma forma, mas não vejo como forçar a sintaxe. este

<code>array.indexOf(this.id === 0);
</code>

por exemplo, retorna indefinido, como provavelmente deveria. Desde já, obrigado!

questionAnswers(16)

yourAnswerToTheQuestion