Spec-Zone.ru › JavaScript

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

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-iterator.prototype.reduce

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
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.reduce in core-js
  • es-shims polyfill of Iterator.prototype.reduce
  • Iterator
  • Iterator.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API