Iterator.prototype.reduce()
Baseline 2025Newly available
Since March 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Die reduce()
Methode von Iterator
Instanzen ist ähnlich wie Array.prototype.reduce
: Sie führt eine vom Benutzer bereitgestellte "Reducer"-Callback-Funktion für jedes Element aus, das vom Iterator erzeugt wird, und übergibt dabei den Rückgabewert aus der Berechnung des vorhergehenden Elements. Das Endergebnis des Ausführens des Reducers über alle 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 zum Wert des
accumulator
-Parameters beim nächsten Aufruf voncallbackFn
. Beim letzten Aufruf wird der Rückgabewert zum Rückgabewert vonreduce()
. Die Funktion wird mit den folgenden Argumenten aufgerufen:accumulator
-
Der Wert, der aus dem vorherigen Anruf von
callbackFn
resultiert. Beim ersten Aufruf ist sein WertinitialValue
, wenn letzterer angegeben ist; andernfalls ist sein Wert das erste Element des Iterators. currentValue
-
Der Wert des aktuellen Elements. Beim ersten Aufruf ist sein Wert das erste Element des Iterators, wenn
initialValue
angegeben ist; andernfalls ist sein Wert das zweite Element. currentIndex
-
Die Indexposition von
currentValue
. Beim ersten Aufruf ist sein Wert0
, wenninitialValue
angegeben ist, andernfalls1
.
initialValue
Optional-
Ein Wert, mit dem
accumulator
beim ersten Aufruf des Callback initialisiert wird. WenninitialValue
angegeben ist, beginntcallbackFn
mit dem ersten Element alscurrentValue
zu arbeiten. WenninitialValue
nicht angegeben ist, wirdaccumulator
mit dem ersten Element initialisiert, undcallbackFn
beginnt mit dem zweiten Element alscurrentValue
. In diesem Fall, wenn der Iterator leer ist (sodass es keinen ersten Wert gibt, der alsaccumulator
zurückgegeben werden kann), wird ein Fehler ausgelöst.
Rückgabewert
Der Wert, der durch die vollständige Ausführung der "Reducer"-Callback-Funktion über den gesamten Iterator resultiert.
Ausnahmen
TypeError
-
Wird ausgelöst, wenn der Iterator keine Elemente enthält und
initialValue
nicht bereitgestellt wird.
Beschreibung
Siehe Array.prototype.reduce()
für Details darüber, wie reduce()
funktioniert. Im Gegensatz zu den meisten anderen Iterator-Hilfsmethoden funktioniert es nicht gut mit unendlichen Iteratoren, da es nicht "lazy" ist.
Beispiele
Verwendung von reduce()
Das folgende Beispiel erstellt einen Iterator, der Terme in der Fibonacci-Sequenz liefert, und summiert dann die ersten zehn Terme:
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
Specification |
---|
Iterator Helpers # sec-iteratorprototype.reduce |