Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Array.prototype.findLast()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2022.
DiefindLast() Methode vonArray-Instanzen iteriert das Array in umgekehrter Reihenfolge und gibt den Wert des ersten Elements zurück, das die bereitgestellte Testfunktion erfüllt.Wenn kein Element die Testfunktion erfüllt, wirdundefined zurückgegeben.
Wenn Sie Folgendes finden müssen:
- daserste übereinstimmende Element, verwenden Sie
find(). - denIndex des letzten übereinstimmenden Elements im Array, verwenden Sie
findLastIndex(). - denIndex eines Werts, verwenden Sie
indexOf().(Es ist ähnlich wiefindIndex(), überprüft jedoch jedes Element auf Gleichheit mit dem Wert anstelle einer Testfunktion.) - ob ein Wertexistiert in einem Array, verwenden Sie
includes().Auch hier wird jedes Element auf Gleichheit mit dem Wert überprüft, anstatt eine Testfunktion zu verwenden. - ob irgendein Element die bereitgestellte Testfunktion erfüllt, verwenden Sie
some().
In diesem Artikel
Probieren Sie es aus
const array = [5, 12, 50, 130, 44];const found = array.findLast((element) => element > 45);console.log(found);// Expected output: 130Syntax
findLast(callbackFn)findLast(callbackFn, thisArg)Parameter
callbackFnEine Funktion, die für jedes Element im Array ausgeführt wird. Sie sollte einentruthy Wert zurückgeben, um anzuzeigen, dass ein übereinstimmendes Element gefunden wurde, und einenfalsy Wert andernfalls. Die Funktion wird mit den folgenden Argumenten aufgerufen:
thisArgOptionalEin Wert, der als
thisbeim Ausführen voncallbackFnverwendet wird. Sieheiterative Methoden.
Rückgabewert
Das letzte Element (höchster Index) im Array, das die bereitgestellte Testfunktion erfüllt;undefined, wenn kein übereinstimmendes Element gefunden wird.
Beschreibung
DiefindLast() Methode ist eineiterative Methode. Sie ruft eine bereitgestelltecallbackFn Funktion einmal für jedes Element in einem Array in absteigender Indexreihenfolge auf, biscallbackFn einentruthy Wert zurückgibt.findLast() gibt dann dieses Element zurück und hört auf, das Array zu durchlaufen. GibtcallbackFn niemals einen truthy Wert zurück, gibtfindLast()undefined zurück. Lesen Sie den Abschnittiterative Methoden, um mehr darüber zu erfahren, wie diese Methoden im Allgemeinen funktionieren.
callbackFn wird fürjeden Index des Arrays aufgerufen, nicht nur für diejenigen mit zugewiesenen Werten. Leere Stellen inspärlichen Arrays verhalten sich wieundefined.
DiefindLast() Methode istgenerisch. Sie erwartet nur, dass derthis-Wert einelength-Eigenschaft und integer-bezogene Eigenschaften hat.
Beispiele
>Finde das letzte Objekt in einem Array, das auf Elementeigenschaften basiert
Dieses Beispiel zeigt, wie Sie einen Test basierend auf den Eigenschaften von Array-Elementen erstellen können.
const inventory = [ { name: "apples", quantity: 2 }, { name: "bananas", quantity: 0 }, { name: "fish", quantity: 1 }, { name: "cherries", quantity: 5 },];// return true inventory stock is lowfunction isNotEnough(item) { return item.quantity < 2;}console.log(inventory.findLast(isNotEnough));// { name: "fish", quantity: 1 }Verwenden von Arrow-Funktion und Destrukturierung
Das vorherige Beispiel könnte mit einer Arrow-Funktion undObjekt-Destrukturierung geschrieben werden:
const inventory = [ { name: "apples", quantity: 2 }, { name: "bananas", quantity: 0 }, { name: "fish", quantity: 1 }, { name: "cherries", quantity: 5 },];const result = inventory.findLast(({ quantity }) => quantity < 2);console.log(result);// { name: "fish", quantity: 1 }Finde die letzte Primzahl in einem Array
Das folgende Beispiel gibt das letzte Element im Array zurück, das eine Primzahl ist, oderundefined, wenn es keine Primzahl gibt.
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].findLast(isPrime)); // undefined, not foundconsole.log([4, 5, 7, 8, 9, 11, 12].findLast(isPrime)); // 11Hinweis:DieisPrime() Implementierung dient nur zur Demonstration. Für eine reale Anwendung sollten Sie einen stark memoisierten Algorithmus wie dasSieb des Eratosthenes verwenden, um wiederholte Berechnungen zu vermeiden.
Verwenden des dritten Arguments von callbackFn
Dasarray-Argument ist nützlich, wenn Sie auf ein anderes Element im Array zugreifen möchten, insbesondere wenn Sie keine bestehende Variable haben, die auf das Array verweist. Das folgende Beispiel verwendet zuerstfilter(), um die positiven Werte zu extrahieren und dannfindLast(), um das letzte Element zu finden, das kleiner als seine Nachbarn ist.
const numbers = [3, -1, 1, 4, 1, 5, 9, 2, 6];const lastTrough = numbers .filter((num) => num > 0) .findLast((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); // 2Verwenden von findLast() auf spärlichen Arrays
Leere Stellen in spärlichen Arrayswerden besucht und werden alsundefined behandelt.
// Declare array with no elements at indexes 2, 3, and 4const array = [0, 1, , , , 5, 6];// Shows all indexes, not just those with assigned valuesarray.findLast((value, index) => { console.log(`Visited index ${index} with value ${value}`); return false;});// Visited index 6 with value 6// Visited index 5 with value 5// Visited index 4 with value undefined// Visited index 3 with value undefined// Visited index 2 with value undefined// Visited index 1 with value 1// Visited index 0 with value 0// Shows all indexes, including deletedarray.findLast((value, index) => { // Delete element 5 on first iteration if (index === 6) { console.log(`Deleting array[5] with value ${array[5]}`); delete array[5]; } // Element 5 is still visited even though deleted console.log(`Visited index ${index} with value ${value}`); return false;});// Deleting array[5] with value 5// Visited index 6 with value 6// Visited index 5 with value undefined// Visited index 4 with value undefined// Visited index 3 with value undefined// Visited index 2 with value undefined// Visited index 1 with value 1// Visited index 0 with value 0Aufrufen von findLast() bei Nicht-Array-Objekten
DiefindLast() Methode liest dielength-Eigenschaft vonthis und greift dann auf jede Eigenschaft zu, deren Schlüssel eine nichtnegative ganze Zahl kleiner alslength ist.
const arrayLike = { length: 3, 0: 2, 1: 7.3, 2: 4, 3: 3, // ignored by findLast() since length is 3};console.log( Array.prototype.findLast.call(arrayLike, (x) => Number.isInteger(x)),); // 4Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.findlast> |
Browser-Kompatibilität
Siehe auch
- Polyfill von
Array.prototype.findLastincore-js - es-shims Polyfill von
Array.prototype.findLast - Leitfaden zu indizierten Sammlungen
ArrayArray.prototype.find()Array.prototype.findIndex()Array.prototype.findLastIndex()Array.prototype.includes()Array.prototype.filter()Array.prototype.every()Array.prototype.some()TypedArray.prototype.findLast()