Iterator.prototype.reduce()
Базовый уровень Недавно добавлен
Эта функция работает на последних устройствах и версиях браузеров. Эта функция может не работать на старых устройствах или версиях браузеров. Она доступна во всех браузерах с марта 2025 года.
Метод reduce() экземпляров Iterator аналогичен Array.prototype.reduce: он выполняет пользовательскую функцию "reducer" для каждого элемента, создаваемого итератором, передавая результат вычисления предыдущего элемента в качестве аргумента. Окончательным результатом выполнения reducer для всех элементов является единое значение.
Синтаксис
reduce(callbackFn) reduce(callbackFn, initialValue)
Параметры
-
callbackFn - Функция, выполняемая для каждого элемента, создаваемого итератором. Ее возвращаемое значение становится значением параметра
accumulatorпри следующем вызовеcallbackFn. Для последнего вызова возвращаемое значение становится возвращаемым значениемreduce(). Функция вызывается со следующими аргументами:-
accumulator - Значение, полученное в результате предыдущего вызова
callbackFn. При первом вызове его значение равноinitialValue, если последний указан; в противном случае его значение равно первому элементу итератора. -
currentValue - Значение текущего элемента. При первом вызове его значение равно первому элементу итератора, если указан
initialValue; в противном случае его значение равно второму элементу. -
currentIndex - Позиция в индексе
currentValue. При первом вызове его значение равно0, если указанinitialValue, иначе1.
-
-
initialValueНеобязательный - Значение, которым
accumulatorинициализируется при первом вызове callback. Если указанinitialValue,callbackFnначинает выполняться с первого элемента в качествеcurrentValue. ЕслиinitialValue*не* указан,accumulatorинициализируется первым элементом, аcallbackFnначинает выполняться со второго элемента в качествеcurrentValue. В этом случае, если итератор пуст (так что нет первого значения для возврата в качествеaccumulator), возникает ошибка.
Возвращаемое значение
Значение, полученное в результате полного выполнения функции "reducer" по всему итератору.
Исключения
-
TypeError - Выбрасывается, если итератор не содержит элементов и
initialValueне предоставлен.
Описание
См. Array.prototype.reduce() для получения сведений о том, как работает reduce(). В отличие от большинства других вспомогательных методов итератора, он плохо работает с бесконечными итераторами, поскольку не является "ленивым".
Примеры
Использование reduce()
Следующий пример создает итератор, который выдает члены последовательности Фибоначчи, а затем суммирует первые десять членов:
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
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
reduce |
122
117–119
|
122
117–119
|
131 |
108
103–105
|
18.4 |
122
117–119
|
131 |
81
78–79
|
18.4 |
26.0
24.0–25.0
|
122
117–119
|
18.4 |
1.1.31 |
1.39 |
22.0.0 |
См. также
- Polyfill of
Iterator.prototype.reduceincore-js - es-shims polyfill of
Iterator.prototype.reduce IteratorIterator.prototype.map()Iterator.prototype.flatMap()Array.prototype.reduce()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator/reduce