Метод reduce

Методът reduce свива масив до една стойност (редуцира). Например, с помощта на този метод може лесно да се намери сумата на елементите на масив (т.е. масивът се свежда до една стойност - сумата на елементите).

Първият параметър на метода reduce получава функция, която последователно ще се изпълни за всеки елемент от масива, започвайки от първия. В тази функция могат да се подават 4 параметъра. Ако тези параметри съществуват (не са задължителни), тогава в първия автоматично ще влезе междинен резултат, във втория ще влезе елементът от масива, в третия - неговият номер в масива (индекс), а в четвъртия - самият масив.

Междинен резултат - това е променлива, в която ще се натрупва стойността, която методът reduce ще върне, когато премине през всички елементи на масива. Например, там последователно може да се натрупва сумата на елементите от масива: първо се поставя първият елемент, при следващото преминаване на цикъла вече сумата от първия елемент и втория, при следващото преминаване - сумата от първия, втория и третия. И така, докато масивът не свърши. Функцията, която приема reduce, трябва да връща новата стойност на междинния резултат.

Вторият параметър на метода reduce указва началната стойност на междинния резултат. Ако не е указана, тя ще бъде равна на първия елемент от масива, а обработката на елементите ще започне от втория елемент.

Синтаксис

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

Пример

Да намерим сумата на елементите от масив:

javascriptlet arr = [1, 2, 3, 4, 5, 6];

let res = arr.reduce(function(sum, elem) {
  return sum + elem;
}, 0);

console.log(res);

Резултат от изпълнението на кода:

javascript21

Пример

Да намерим сумата на всички положителни числа от масив:

javascriptlet 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);

Резултат от изпълнението на кода:

javascript10

Вижте също

  • метод reduceRight,
    изпълняващ подобна операция
  • метод filter,
    който позволява филтриране на елементи от масив
  • методи map и forEach,
    които позволяват прилагане на функция към всеки елемент от масив
  • методи some и every,
    изпълняващи проверка на масив