Array.prototype.lastIndexOf()
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Die Methode lastIndexOf() von Array-Instanzen gibt den letzten Index zurück, an dem ein bestimmtes Element im Array gefunden wird, oder -1, wenn es nicht vorhanden ist. Das Array wird ab fromIndex rückwärts durchsucht.
Probieren Sie es aus
const animals = ["Dodo", "Tiger", "Penguin", "Dodo"];
console.log(animals.lastIndexOf("Dodo"));
// Expected output: 3
console.log(animals.lastIndexOf("Tiger"));
// Expected output: 1
Syntax
lastIndexOf(searchElement)
lastIndexOf(searchElement, fromIndex)
Parameter
searchElement-
Das Element, das im Array gesucht werden soll.
fromIndexOptional-
Nullbasierter Index, an dem die Rückwärtssuche beginnt; er wird in eine Ganzzahl umgewandelt.
- Ein negativer Index zählt vom Ende des Arrays zurück. Wenn
-array.length <= fromIndex < 0gilt, wirdfromIndex + array.lengthverwendet. - Wenn
fromIndex < -array.lengthgilt, wird das Array nicht durchsucht und-1zurückgegeben. Anschaulich beginnt die Suche dann an einer nicht vorhandenen Position vor dem Anfang des Arrays und läuft von dort rückwärts. Auf diesem Weg liegen keine Array-Elemente, daher wirdsearchElementnie gefunden. - Wenn
fromIndex >= array.lengthgilt oderfromIndexweggelassen wird oderundefinedist, wirdarray.length - 1verwendet. Dadurch wird das gesamte Array durchsucht. Anschaulich beginnt die Suche dann an einer nicht vorhandenen Position hinter dem Ende des Arrays und läuft von dort rückwärts. Schließlich erreicht sie das tatsächliche Ende des Arrays und durchsucht ab dort die vorhandenen Array-Elemente rückwärts.
- Ein negativer Index zählt vom Ende des Arrays zurück. Wenn
Rückgabewert
Der letzte Index von searchElement im Array; -1, wenn das Element nicht gefunden wird.
Beschreibung
Die Methode lastIndexOf() vergleicht searchElement mit den Elementen des Arrays mittels strikter Gleichheit (demselben Algorithmus, den der Operator === verwendet). NaN-Werte werden nie als gleich betrachtet. Daher gibt lastIndexOf() immer -1 zurück, wenn searchElement den Wert NaN hat.
Die Methode lastIndexOf() überspringt leere Stellen in Arrays mit Lücken.
Die Methode lastIndexOf() ist generisch. Sie erwartet lediglich, dass der Wert von this eine length-Eigenschaft und Eigenschaften mit ganzzahligen Schlüsseln besitzt.
Beispiele
>lastIndexOf() verwenden
Das folgende Beispiel verwendet lastIndexOf(), um Werte in einem Array zu finden.
const numbers = [2, 5, 9, 2];
numbers.lastIndexOf(2); // 3
numbers.lastIndexOf(7); // -1
numbers.lastIndexOf(2, 3); // 3
numbers.lastIndexOf(2, 2); // 0
numbers.lastIndexOf(2, -2); // 0
numbers.lastIndexOf(2, -1); // 3
Mit lastIndexOf() können Sie nicht nach NaN suchen.
const array = [NaN];
array.lastIndexOf(NaN); // -1
Alle Vorkommen eines Elements finden
Das folgende Beispiel verwendet lastIndexOf, um alle Indizes eines Elements in einem bestimmten Array zu finden. Dabei werden die gefundenen Indizes mit push() zu einem anderen Array hinzugefügt.
const indices = [];
const array = ["a", "b", "a", "c", "a", "d"];
const element = "a";
let idx = array.lastIndexOf(element);
while (idx !== -1) {
indices.push(idx);
idx = idx > 0 ? array.lastIndexOf(element, idx - 1) : -1;
}
console.log(indices);
// [4, 2, 0]
Beachten Sie, dass der Fall idx === 0 hier gesondert behandelt werden muss: Wenn das gesuchte Element das erste Element des Arrays ist, wird es unabhängig vom Parameter fromIndex immer gefunden. Dies unterscheidet sich von der Methode indexOf().
lastIndexOf() bei Arrays mit Lücken verwenden
Mit lastIndexOf() können Sie nicht nach leeren Stellen in Arrays mit Lücken suchen.
console.log([1, , 3].lastIndexOf(undefined)); // -1
lastIndexOf() für Objekte aufrufen, die keine Arrays sind
Die Methode lastIndexOf() liest die length-Eigenschaft von this und greift dann auf jede Eigenschaft zu, deren Schlüssel eine nicht negative Ganzzahl kleiner als length ist.
const arrayLike = {
length: 3,
0: 2,
1: 3,
2: 2,
3: 5, // ignored by lastIndexOf() since length is 3
};
console.log(Array.prototype.lastIndexOf.call(arrayLike, 2));
// 2
console.log(Array.prototype.lastIndexOf.call(arrayLike, 5));
// -1
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.lastindexof> |