Метод reduce

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

Смотрите также

  • метод reduceRight,
    выполняющий похожую операцию
  • метод filter,
    который позволяет фильтровать элементы массива
  • методы map и forEach,
    которые позволяют применить функцию к каждому элементу массива
  • методы some и every,
    выполняющие проверку массива