АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
108 of 264 menu
Бесплатная Тренировка Верстки. Приглашаются желающие поверстать!

Метод reduce

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

Первым параметром метод reduce получает функцию, которая последовательно выполнится для каждого элемента массива, начиная с первого. В эту функцию можно передавать 4 параметра. Если эти параметры есть (они не обязательны), то в первый автоматически попадет промежуточный результат, во второй попадет элемент массива, в третий - его номер в массиве (индекс), а в четвертый - сам массив.

Промежуточный результат - это переменная, в которой будет накапливаться то значение, которое вернет метод reduce, когда переберет все элементы массива. К примеру, туда последовательно можно накапливать сумму элементов массива: сначала положить первый элемент, при следующем проходе цикла уже сумму первого элемента и второго, при следующем проходе - сумму первого, второго и третьего. И так, пока массив не закончится. Функция, которую принимает reduce, должна возвращать новое значение промежуточного результата.

Вторым параметром метода reduce указывается начальное значение промежуточного результата. Если его не указать, то оно будет равно первому элементу массива, а обработка элементов начнется со второго элемента.

Синтаксис

массив.reduce(function(промежуточный результат, элемент, индекс, массив) { return новый промежуточный результат; }, начальное значение);

Пример

Найдем сумму элементов массива:

let arr = [1, 2, 3, 4, 5, 6]; let res = arr.reduce(function(sum, elem) { return sum + elem; }, 0); console.log(res);

Результат выполнения кода:

21

Пример

Давайте найдем сумму всех положительных чисел массива:

let arr = [1, -2, -3, 4, 5, -6]; let res = arr.reduce(function(sum, elem) { if (elem >= 0) { return sum + elem; } else { return sum; } }, 0); console.log(res);

Результат выполнения кода:

10

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

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