Iterator.prototype.reduce()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die reduce()
Methode von Iterator
Instanzen ähnelt Array.prototype.reduce
: Sie führt eine benutzerdefinierte "Reducer"-Callback-Funktion für jedes vom Iterator erzeugte Element aus und übergibt dabei den Rückgabewert der Berechnung des vorherigen Elements. Das Endergebnis der Ausführung des Reducers über alle Elemente hinweg 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 der 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 sich aus dem vorherigen Aufruf von
callbackFn
ergibt. Beim ersten Aufruf ist sein WertinitialValue
, falls 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 Callbacks initialisiert wird. WenninitialValue
angegeben ist, beginnt die Ausführung voncallbackFn
mit dem ersten Element alscurrentValue
. WenninitialValue
nicht angegeben ist, wirdaccumulator
auf das erste Element initialisiert, undcallbackFn
beginnt die Ausführung mit dem zweiten Element alscurrentValue
. In diesem Fall, wenn der Iterator leer ist (also kein erster Wert alsaccumulator
zurückzugeben ist), wird ein Fehler ausgelöst.
Rückgabewert
Der Wert, der sich aus der vollständigen Ausführung der "Reducer"-Callback-Funktion über den gesamten Iterator ergibt.
Ausnahmen
TypeError
-
Wird ausgelöst, wenn der Iterator keine Elemente enthält und
initialValue
nicht angegeben ist.
Beschreibung
Siehe Array.prototype.reduce()
für Details dazu, 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 addiert 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 |
Browser-Kompatibilität
BCD tables only load in the browser