Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
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 reduceRight()-Methode von Array-Instanzen wendet eine Funktion gegen einen Akkumulator und jeden Wert des Arrays (von rechts nach links) an, um es auf einen einzelnen Wert zu reduzieren.
Siehe auch Array.prototype.reduce() für von links nach rechts.
Eine Funktion, die für jedes Element im Array ausgeführt wird. Ihr Rückgabewert wird zum Wert des accumulator-Parameters beim nächsten Aufruf von callbackFn. Beim letzten Aufruf wird der Rückgabewert zum Rückgabewert von reduceRight(). Die Funktion wird mit den folgenden Argumenten aufgerufen:
accumulatorDer Wert, der sich aus dem vorherigen Aufruf von callbackFn ergibt. Beim ersten Aufruf ist sein Wert initialValue, falls letzterer angegeben ist; andernfalls ist sein Wert das letzte Element des Arrays.
currentValueDer Wert des aktuellen Elements. Beim ersten Aufruf ist sein Wert das letzte Element, wenn initialValue angegeben ist; andernfalls ist sein Wert das vorletzte Element.
currentIndexDie Indexposition von currentValue im Array. Beim ersten Aufruf ist sein Wert array.length - 1, wenn initialValue angegeben ist, andernfalls array.length - 2.
arrayDas Array, auf dem reduceRight() aufgerufen wurde.
initialValue OptionalWert, der als Akkumulator beim ersten Aufruf von callbackFn verwendet wird. Wenn kein Anfangswert angegeben wird, wird das letzte Element im Array verwendet und übersprungen. reduceRight() auf einem leeren Array ohne Anfangswert aufzurufen, erzeugt einen TypeError.
Der Wert, der aus der Reduktion resultiert.
Die reduceRight()-Methode ist eine iterative Methode. Sie führt eine "Reducer"-Callback-Funktion über alle Elemente im Array in absteigender Indexreihenfolge aus und akkumuliert sie zu einem einzigen Wert. Lesen Sie den Abschnitt iterative Methoden, um mehr darüber zu erfahren, wie diese Methoden allgemein funktionieren.
callbackFn wird nur für Array-Indizes aufgerufen, denen Werte zugewiesen sind. Es wird nicht für leere Stellen in sparse arrays aufgerufen.
Im Gegensatz zu anderen iterativen Methoden akzeptiert reduceRight() kein thisArg-Argument. callbackFn wird immer mit undefined als this aufgerufen, das ersetzt wird durch globalThis, wenn callbackFn nicht "strict" ist.
Die reduceRight()-Methode ist generisch. Sie erwartet nur, dass der this-Wert eine length-Eigenschaft und ganzzahlig indizierte Eigenschaften hat.
Alle Vorbehalte zu reduce, die in when to not use reduce() diskutiert werden, gelten auch für reduceRight. Da JavaScript keine Lazy-Evaluation-Semantik hat, gibt es keinen Leistungsunterschied zwischen reduce und reduceRight.
Der Aufruf der reduceRight-callbackFn könnte folgendermaßen aussehen:
Das erste Mal, wenn die Funktion aufgerufen wird, können der accumulator und currentValue einen von zwei Werten annehmen. Wenn ein initialValue im Aufruf von reduceRight angegeben wurde, wird accumulator gleich initialValue und currentValue wird gleich dem letzten Wert im Array. Wenn kein initialValue angegeben wurde, wird accumulator gleich dem letzten Wert im Array und currentValue gleich dem vorletzten Wert.
Wenn das Array leer ist und kein initialValue angegeben wurde, wird TypeError ausgelöst. Wenn das Array nur ein Element hat (unabhängig von der Position) und kein initialValue angegeben wurde oder wenn initialValue angegeben ist, aber das Array leer ist, würde der einzelne Wert ohne Aufruf von callbackFn zurückgegeben.
Einige Beispiel-Durchläufe der Funktion könnten so aussehen:
Das Callback würde viermal aufgerufen, wobei die Argumente und Rückgabewerte bei jedem Aufruf wie folgt sind:
| Erster Aufruf | 4 | 3 | 3 | 7 |
| Zweiter Aufruf | 7 | 2 | 2 | 9 |
| Dritter Aufruf | 9 | 1 | 1 | 10 |
| Vierter Aufruf | 10 | 0 | 0 | 10 |
Der array-Parameter ändert sich während des Prozesses nie - es ist immer [0, 1, 2, 3, 4]. Der von reduceRight zurückgegebene Wert würde der des letzten Callback-Aufrufs sein (10).
Hier reduzieren wir dasselbe Array mit demselben Algorithmus, aber mit einem initialValue von 10, der als zweites Argument an reduceRight() übergeben wird:
| Erster Aufruf | 10 | 4 | 4 | 14 |
| Zweiter Aufruf | 14 | 3 | 3 | 17 |
| Dritter Aufruf | 17 | 2 | 2 | 19 |
| Vierter Aufruf | 19 | 1 | 1 | 20 |
| Fünfter Aufruf | 20 | 0 | 0 | 20 |
Der von reduceRight zurückgegebene Wert wäre diesmal natürlich 20.
Funktionskomposition ist ein Mechanismus zum Kombinieren von Funktionen, bei dem die Ausgabe jeder Funktion in die nächste eingespeist wird und die Ausgabe der letzten Funktion das Endergebnis ist. In diesem Beispiel verwenden wir reduceRight(), um die Funktionskomposition zu implementieren.
Siehe auch Funktionskomposition auf Wikipedia.
reduceRight() überspringt fehlende Elemente in Sparse-Arrays, aber es überspringt nicht undefined-Werte.
Die reduceRight()-Methode liest die length-Eigenschaft von this und greift dann auf jede Eigenschaft zu, deren Schlüssel eine nicht-negative ganze Zahl kleiner als length ist.
| ECMAScript® 2027 Language Specification # sec-array.prototype.reduceright |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.