Метод reduce
сворачивает массив к
одному значению (редуцирует). К примеру,
с помощью reduce можно легко найти сумму
элементов массива (то есть массив сведется
к одному значению - к сумме элементов).
Первым параметром метод reduce
получает
функцию, которая последовательно выполнится
для каждого элемента массива, начиная с первого.
В эту функцию можно передавать 4
параметра.
Если эти параметры есть (они не обязательны),
то в первый автоматически попадет промежуточный
результат, во второй попадет элемент
массива, в третий - его номер в массиве (индекс),
а в четвертый - сам массив.
Промежуточный результат - это переменная,
в которую будет накапливаться то значение,
которое вернет метод reduce
, когда
переберет все элементы массива. К примеру,
туда последовательно можно накапливать сумму
элементов массива: сначала положить первый
элемент, при следующем проходе цикла уже
сумму первого элемента и второго, при следующем
проходе - сумму первого, второго и третьего.
И так, пока массив не закончится.
Функция, которую принимает reduce
,
должна возвращать новое значение промежуточного
результата.
Вторым параметром метода reduce
указывается
начальное значение промежуточного результата.
Если его не указать, то оно будет равно первому
элементу массива, а обработка элементов начнется
со второго элемента.
Синтаксис
массив.reduce(function(промежуточный результат, элемент, индекс, массив) {
return новый промежуточный результат;
}, начальное значение);
Пример
Найдем сумму элементов массива:
let arr = [1, 2, 3, 4, 5, 6];
let result = arr.reduce(function(sum, elem) {
return sum + elem;
}, 0);
console.log(result);
Результат выполнения кода:
21
Пример
Найдем сумму все положительных чисел массива:
let arr = [1, -2, -3, 4, 5, -6];
let result = arr.reduce(function(sum, elem) {
if (elem >= 0) {
return sum + elem;
} else {
return sum;
}
});
console.log(result);
Результат выполнения кода:
10