Array.prototype.findLastIndex()
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit August 2022 browserübergreifend verfügbar.
Die Methode findLastIndex() von Array-Instanzen durchläuft das Array in umgekehrter Reihenfolge und gibt den Index des ersten Elements zurück, das die angegebene Prüffunktion erfüllt.
Wenn kein Element die Prüffunktion erfüllt, wird -1 zurückgegeben.
Siehe auch die Methode findLast(), die den Wert des letzten Elements zurückgibt, das die Prüffunktion erfüllt (statt dessen Index).
Probieren Sie es aus
const array = [5, 12, 50, 130, 44];
const isLargeNumber = (element) => element > 45;
console.log(array.findLastIndex(isLargeNumber));
// Expected output: 3
// Index of element with value: 130
Syntax
findLastIndex(callbackFn)
findLastIndex(callbackFn, thisArg)
Parameter
callbackFn-
Eine Funktion, die für jedes Element im Array ausgeführt wird. Sie sollte einen truthy Wert zurückgeben, wenn ein passendes Element gefunden wurde, andernfalls einen falsy Wert. Die Funktion wird mit den folgenden Argumenten aufgerufen:
thisArgOptional-
Ein Wert, der beim Ausführen von
callbackFnalsthisverwendet wird. Siehe iterative Methoden.
Rückgabewert
Der Index des letzten Elements (mit dem höchsten Index) im Array, das die Prüfung besteht.
Andernfalls -1, wenn kein passendes Element gefunden wird.
Beschreibung
Die Methode findLastIndex() ist eine iterative Methode. Sie ruft die bereitgestellte Funktion callbackFn für jedes Element eines Arrays einmal in absteigender Indexreihenfolge auf, bis callbackFn einen truthy Wert zurückgibt. findLastIndex() gibt dann den Index dieses Elements zurück und beendet die Iteration über das Array. Wenn callbackFn nie einen truthy Wert zurückgibt, gibt findLastIndex() -1 zurück. Weitere Informationen zur allgemeinen Funktionsweise dieser Methoden finden Sie im Abschnitt über iterative Methoden.
callbackFn wird für jeden Index des Arrays aufgerufen, nicht nur für Indizes mit zugewiesenen Werten. Leere Stellen in Arrays mit Lücken verhalten sich wie undefined.
Die Methode findLastIndex() ist generisch. Sie setzt lediglich voraus, dass der Wert von this eine length-Eigenschaft und Eigenschaften mit ganzzahligen Schlüsseln besitzt.
Beispiele
>Den Index der letzten Primzahl in einem Array finden
Das folgende Beispiel gibt den Index des letzten Elements im Array zurück, das eine Primzahl ist, oder -1, wenn keine Primzahl vorhanden ist.
function isPrime(n) {
if (n < 2) {
return false;
}
if (n % 2 === 0) {
return n === 2;
}
for (let factor = 3; factor * factor <= n; factor += 2) {
if (n % factor === 0) {
return false;
}
}
return true;
}
console.log([4, 6, 8, 12].findLastIndex(isPrime)); // -1, not found
console.log([4, 5, 7, 8, 9, 11, 12].findLastIndex(isPrime)); // 5
Hinweis:
Die Implementierung von isPrime() dient nur zur Veranschaulichung. Für eine reale Anwendung sollten Sie einen Algorithmus mit umfassender Memoisierung wie das Sieb des Eratosthenes verwenden, um wiederholte Berechnungen zu vermeiden.
Das dritte Argument von callbackFn verwenden
Das Argument array ist nützlich, wenn Sie auf ein anderes Element im Array zugreifen möchten, insbesondere wenn keine Variable vorhanden ist, die auf das Array verweist. Das folgende Beispiel verwendet zunächst filter(), um die positiven Werte zu extrahieren, und anschließend findLastIndex(), um das letzte Element zu finden, das kleiner als seine Nachbarelemente ist.
const numbers = [3, -1, 1, 4, 1, 5, 9, 2, 6];
const lastTrough = numbers
.filter((num) => num > 0)
.findLastIndex((num, idx, arr) => {
// Without the arr argument, there's no way to easily access the
// intermediate array without saving it to a variable.
if (idx > 0 && num >= arr[idx - 1]) return false;
if (idx < arr.length - 1 && num >= arr[idx + 1]) return false;
return true;
});
console.log(lastTrough); // 6
findLastIndex() bei Arrays mit Lücken verwenden
Sie können in einem Array mit Lücken nach undefined suchen und den Index einer leeren Stelle erhalten.
console.log([1, , 3].findLastIndex((x) => x === undefined)); // 1
findLastIndex() für Objekte aufrufen, die keine Arrays sind
Die Methode findLastIndex() 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: 7.3,
2: 4,
3: 3, // ignored by findLastIndex() since length is 3
};
console.log(
Array.prototype.findLastIndex.call(arrayLike, (x) => Number.isInteger(x)),
); // 2
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.findlastindex> |
Browser-Kompatibilität
Siehe auch
- Polyfill für
Array.prototype.findLastIndexincore-js - es-shims-Polyfill für
Array.prototype.findLastIndex - Indizierte Sammlungen – Leitfaden
ArrayArray.prototype.find()Array.prototype.findIndex()Array.prototype.findLast()Array.prototype.indexOf()Array.prototype.lastIndexOf()TypedArray.prototype.findLastIndex()