Iterator.prototype.reduce()
Baseline
2025
Newly 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 ä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 vorhergehenden Elements. Das Endergebnis des Reducers über alle Elemente ist ein Einzelwert.
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 der 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 entspricht sein WertinitialValue, falls letzterer angegeben ist; andernfalls entspricht sein Wert dem ersten Element des Iterators. currentValue-
Der Wert des aktuellen Elements. Beim ersten Aufruf entspricht sein Wert dem ersten Element des Iterators, falls
initialValueangegeben ist; andernfalls entspricht sein Wert dem zweiten Element. currentIndex-
Die Indexposition von
currentValue. Beim ersten Aufruf entspricht sein Wert0, wenninitialValueangegeben ist, andernfalls1.
initialValueOptional-
Ein Wert, auf den
accumulatorbeim ersten Aufruf des Callbacks initialisiert wird. WenninitialValueangegeben wird, beginntcallbackFnmit dem ersten Element alscurrentValueauszuführen. IstinitialValuenicht angegeben, wirdaccumulatorauf das erste Element initialisiert, undcallbackFnbeginnt mit dem zweiten Element alscurrentValuezu arbeiten. In diesem Fall wird ein Fehler ausgelöst, wenn der Iterator leer ist (sodass kein erster Wert alsaccumulatorzurückgegeben werden kann).
Rückgabewert
Der Wert, der sich ergibt, nachdem die "Reducer"-Callback-Funktion über den gesamten Iterator vollständig ausgeführt wurde.
Ausnahmen
TypeError-
Wird ausgelöst, wenn der Iterator keine Elemente enthält und
initialValuenicht angegeben ist.
Beschreibung
Siehe Array.prototype.reduce() für Details, wie reduce() arbeitet. Im Gegensatz zu den meisten anderen Hilfsmethoden für Iteratoren funktioniert es nicht gut mit unendlichen Iteratoren, da es nicht lazy ist.
Beispiele
>Verwendung von reduce()
Im folgenden Beispiel wird ein Iterator erstellt, der Begriffe der Fibonacci-Folge erzeugt und dann die ersten zehn Begriffe 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 |
|---|
| ECMAScript® 2026 Language Specification> # sec-iterator.prototype.reduce> |
Browser-Kompatibilität
Loading…