Метод reduce в JavaScript
Метод 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