私はこれを行うための効率的な方法を見つけるために少しサーフィンをしてきましたが、どこにも行きませんでした。次のようなオブジェクトの配列があります。
array[i].id = some number;
array[i].name = some name;
私がやりたいのは、idが0、1、2、3、4のいずれかに等しいオブジェクトのINDEXESを見つけることです。たとえば、次のようにすることができます。
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 }
}
これは機能しますが、特にarray.lengthが大きくなる可能性がある場合は、非常に高価で遅くなります(醜いことは言うまでもありません)。これを少し改善するためのアイデアはありますか?どういうわけかarray.indexOfを使用することを考えましたが、構文を強制する方法がわかりません。この
array.indexOf(this.id === 0);
たとえば、おそらく必要に応じて、undefinedを返します。前もって感謝します!
Array.prototype.findIndex()
にECMAScript 2015に新しい配列メソッドがあります。受け入れられた答えは素晴らしいものでした。