Ich bin verwirrt zwischen dem Unterschied zwischen den beiden Funktionen indexOf und find Index in einem Array.
Die Dokumentation sagt
findIndex - Gibt den Index des ersten Elements im Array zurück, bei dem das Prädikat true ist, andernfalls -1.
und
indexOf - Gibt den Index des ersten Auftretens eines Werts in einem Array zurück.
javascript
Rahul Singh
quelle
quelle
Antworten:
Der Hauptunterschied sind die Parameter dieser Funktionen:
Array.prototype.indexOf()
erwartet einen Wert als ersten Parameter. Dies macht es zu einer guten Wahl, den Index in Arrays primitiver Typen (wie Zeichenfolge, Zahl oder Boolescher Wert) zu finden.Array.prototype.findIndex()
erwartet einen Rückruf als ersten Parameter. Verwenden Sie diese Option, wenn Sie den Index in Arrays mit nicht primitiven Typen (z. B. Objekten) benötigen oder Ihre Suchbedingung komplexer ist als nur ein Wert.Beispiele für beide Fälle finden Sie unter den Links.
quelle
indexOf
funktioniert, um Objekte zu finden. Es ist wichtig zu unterscheiden, dass es ein einzelnes Objekt akzeptiert, nicht nur einen Wert, und nach Gleichheit und nicht nach Wert vergleicht. Per Mozilla-Dokumentation:indexOf() compares searchElement to elements of the Array using strict equality (the same method used by the === or triple-equals operator).
Bitte ändern Sie diefindIndex
Erklärung so, dass sie nur das Glied "oder Ihre Suchbedingung ist komplexer als nur ein einzelner Wert oder eine Referenz" enthält, um dies zu korrigieren, da es mich ursprünglich in die Irre geführt hat. Vielen Dank![{a:1}].indexOf({a:1})
zurück,-1
obwohl das Objekt dasselbe zu sein scheint (dies ist jedoch nicht der Fall). Ich bin mir nicht sicher, ob diese Informationen für die Antwort hilfreich sind, da sie möglicherweise verwirrend sind. Wenn Sie mehr über das genaue Sprachverhalten wissen möchten, sollten Sie die Spezifikation lesen..indexOf(NaN)
immer zurückkehren wird,-1
weilNaN==NaN
es immer istfalse
.NaN
ist ein primitiver Typ, weiltypeof NaN
esnumber
so ist und so ist,null
undundefined
deshalb würde ich dies ändern, um zu vermeiden, dassindexOf
Werke über primitive Typen gesagt werdenFindIndex ist nützlich, wenn Sie das erste Element suchen möchten, das Ihrem Prädikat entspricht: Im Beispiel von W3C gibt es Zahlen und Übereinstimmungen, wenn das Alter des Kunden über oder gleich 18 ist.
Konsole:
Sie können einen genauen Elementindex mit der indexOf-Funktion von Array finden, aber Sie können kein Prädikat übergeben. Es ist schneller, wenn Sie ein bestimmtes Element finden möchten:
kehrt zurück:
Die Indexzählung beginnt bei 0, daher ist der erste Elementindex 0.
quelle
Der Hauptunterschied sind die Parameter dieser Funktionen:
-> Array.prototype.indexOf () :
-> Array.prototype.findIndex () :
quelle
Sie können auch verwenden
includes
:aber ich bevorzuge die
indexOf
Methode:quelle
indexOf
ist auch viel schneller.Ein weiterer Unterschied besteht darin, dass der Benutzer mit findIndex () eine Funktion anwenden und das Element in dem Array finden kann, das den Test besteht.
Dies gilt jedoch nicht für den Operator indexOf () . Ein Benutzer kann einfach überprüfen, ob das bestimmte Element im Array vorhanden ist oder nicht.
quelle
Einfach - Welche Art von Array-Struktur verwenden Sie?
findIndex()
;indexOf()
."Ich möchte den Index in einer Reihe von Objekten mit dem Schlüssel" Orange "finden.
"Ich möchte den Index in einem einfachen Array finden ".
quelle
Sie können die folgenden Codes ausprobieren: -
quelle