Iterator.prototype.reduce()
Baseline 2025>
Neu verfügbar
Seit März 2025 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.
Die Methode reduce() von Iterator-Instanzen funktioniert ähnlich wie Array.prototype.reduce: Sie führt für jedes vom Iterator erzeugte Element eine bereitgestellte „Reducer“-Callback-Funktion aus und übergibt ihr den Rückgabewert der Berechnung für das vorherige Element. Das Ergebnis nach der Verarbeitung aller Elemente ist ein einzelner Wert.
Syntax
reduce(callbackFn)
reduce(callbackFn, initialValue)
Parameter
callbackFn-
Eine Funktion, die für jedes vom Iterator erzeugte Element ausgeführt wird. Ihr Rückgabewert wird beim nächsten Aufruf von
callbackFnzum Wert des Parametersaccumulator. Beim letzten Aufruf wird der Rückgabewert zum Rückgabewert vonreduce(). Die Funktion wird mit den folgenden Argumenten aufgerufen:accumulator-
Der Wert, der sich aus dem vorherigen Aufruf von
callbackFnergibt. Beim ersten Aufruf ist sein WertinitialValue, falls dieser angegeben wurde; andernfalls ist es das erste Element des Iterators. currentValue-
Der Wert des aktuellen Elements. Beim ersten Aufruf ist dies das erste Element des Iterators, wenn
initialValueangegeben wurde; andernfalls ist es das zweite Element. currentIndex-
Die Indexposition von
currentValue. Beim ersten Aufruf ist der Wert0, wenninitialValueangegeben wurde, andernfalls1.
initialValueOptional-
Ein Wert, mit dem
accumulatorbeim ersten Aufruf des Callbacks initialisiert wird. WenninitialValueangegeben wurde, beginnt die Ausführung voncallbackFnmit dem ersten Element alscurrentValue. WenninitialValuenicht angegeben wurde, wirdaccumulatormit dem ersten Element initialisiert, und die Ausführung voncallbackFnbeginnt mit dem zweiten Element alscurrentValue. Ist der Iterator in diesem Fall leer, wird ein Fehler ausgelöst, da kein erstes Element alsaccumulatorzur Verfügung steht.
Rückgabewert
Der Wert, der sich ergibt, nachdem die „Reducer“-Callback-Funktion über den gesamten Iterator ausgeführt wurde.
Ausnahmen
TypeError-
Wird ausgelöst, wenn der Iterator keine Elemente enthält und
initialValuenicht angegeben wurde.
Beschreibung
Einzelheiten zur Funktionsweise von reduce() finden Sie unter Array.prototype.reduce(). Anders als die meisten anderen Iterator-Hilfsmethoden eignet sich reduce() nicht für unendliche Iteratoren, da die Methode nicht lazy ist.
Beispiele
>reduce() verwenden
Das folgende Beispiel erstellt einen Iterator, der Glieder der Fibonacci-Folge liefert, und summiert anschließend die ersten zehn Glieder:
function* fibonacci() {
let current = 1;
let next = 1;
while (true) {
yield current;
[current, next] = [next, current + next];
}
}
console.log(
fibonacci()
.take(10)
.reduce((a, b) => a + b),
); // 143
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-iterator.prototype.reduce> |