English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Метод reduce() для массива в JavaScript

 Объект массива JavaScript

reduce()Метод принимает функцию в качестве аккумулятора, начинает сокращение с каждого значения массива (слева направо) и в конечном итоге вычисляет один значений.

reduce()Метод выполняет回调 функцию для каждого индекса массива.

Возвратное значение функции хранится в аккумуляторе (result).

Грамматика:

array.reduce(callback, initialValue)
var nums = [10, 20, 30, 40, 50];
var sum = nums.reduce(getTotal);
function getTotal(x, y) {
return (x + y);
}
Проверьте тест <›/›

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

Числа в таблице указывают на первую версию браузера, которая полностью поддерживает метод reduce():

Метод
reduce()Да310.549

Значения параметров

ПараметрыОписание
callback
Функция, выполняемая для каждого элемента массива.
Параметры функции:
  • accumulator(необходимый) - функцияinitialValueили先前 возвращенное значение

  • element(обязательный) - текущий элемент в массиве

  • index(по умолчанию) - индекс текущего элемента в массиве

  • array(по умолчанию) - вызывается массивreduce()

initialValue(по умолчанию) Значение, используемое в качестве первого параметра回调 при первом вызове. Если не предоставлено начальное значение, будет использоваться первый элемент массива.

Технические детали

Возвратное значение:Уменьшение созданных значений
Версия JavaScript:ECMAScript 5

Более примеров

Этот пример удаляет дубликаты из массива:

var nums = [10, 20, 10, 20, 13, 5, 4, 5, 13, 4, 4, 4, 4];
let result = nums.sort().reduce((accumulator, current) => {
const length = accumulator.length;
if (length === 0 || accumulator[length - 1] !== current) {
accumulator.push(current);
}
return accumulator;
}, []);
function myFunc() {
   document.getElementById("result").innerHTML = result;
}
Проверьте тест <›/›

Разница между reduce() и reduceRight():

var arr = ['1', '2', '3', '4', '5'];
function funcReduce() {
var val = arr.reduce(function(x, y) { return x + y; });
document.getElementById("result").innerHTML = val;
}
function funcReduceRight() {
var val = arr.reduceRight(function(x, y) { return x + y; });
document.getElementById("result").innerHTML = val;
}
Проверьте тест <›/›

 Объект массива JavaScript