Ich habe hier einige Leistungstests für verschiedene Antworten durchgeführt, die jeder selbst durchführen kann:
https://jsperf.com/find-index-of-object-in-array-by-contents
Nach meinen ersten Tests in Chrome ist die folgende Methode (mit einer for-Schleife innerhalb eines Prototyps) die schnellste:
Array.prototype.indexOfObject = function (property, value) {
for (var i = 0, len = this.length; i < len; i++) {
if (this[i][property] === value) return i;
}
return -1;
}
myArray.indexOfObject("hello", "stevie");
Dieser Code ist eine leicht modifizierte Version der Antwort von Nathan Zaetta.
In den Leistungsbenchmarks habe ich es sowohl mit dem Ziel in der Mitte (Index 500) als auch ganz am Ende (Index 999) eines Arrays mit 1000 Objekten ausprobiert, und selbst wenn ich das Ziel als allerletztes Element im Array einfüge (was bedeutet, dass es durch jedes einzelne Element im Array schleifen muss, bevor es gefunden wird), ist es immer noch am schnellsten.
Diese Lösung hat auch den Vorteil, dass sie eine der kürzesten Lösungen für die wiederholte Ausführung ist, da nur die letzte Zeile wiederholt werden muss:
myArray.indexOfObject("hello", "stevie");