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 ist ähnlich zu Array.prototype.reduce
: Sie führt eine vom Benutzer bereitgestellte "Reducer"-Callback-Funktion auf jedem vom Iterator erzeugten Element aus und übergibt den Rückgabewert aus der Berechnung des vorhergehenden Elements. Das Endergebnis der Ausführung 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 der Wert des
accumulator
-Parameters beim nächsten Aufruf voncallbackFn
. Beim letzten Aufruf wird der Rückgabewert der 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 dessen WertinitialValue
, falls letzteres angegeben ist; andernfalls ist dessen Wert das erste Element des Iterators. currentValue
-
Der Wert des aktuellen Elements. Beim ersten Aufruf ist dessen Wert das erste Element des Iterators, wenn
initialValue
angegeben ist; andernfalls ist dessen Wert das zweite Element. currentIndex
-
Die Indexposition von
currentValue
. Beim ersten Aufruf ist dessen Wert0
, wenninitialValue
angegeben ist, andernfalls1
.
initialValue
Optional-
Ein Wert, auf den
accumulator
beim ersten Aufruf der Callback-Funktion initialisiert wird. WenninitialValue
angegeben ist, beginntcallbackFn
mit dem ersten Element alscurrentValue
auszuführen. WenninitialValue
nicht angegeben ist, wirdaccumulator
auf das erste Element initialisiert undcallbackFn
beginnt mit dem zweiten Element alscurrentValue
auszuführen. In diesem Fall wird ein Fehler ausgelöst, wenn der Iterator leer ist (sodass es keinen ersten Wert gibt, der alsaccumulator
zurückgegeben werden kann).
Rückgabewert
Der Wert, der aus der vollständigen 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-Hilfemethoden funktioniert es nicht gut mit unendlichen Iteratoren, da es nicht lazy ist.
Beispiele
Verwendung von reduce()
Im folgenden Beispiel wird ein Iterator erstellt, der Terme in der Fibonacci-Sequenz liefert, und dann werden die ersten zehn Terme summiert:
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