Javascript Array намаляване ()

Методът на JavaScript Array reduce () изпълнява редукторна функция за всеки елемент от масива и връща единична изходна стойност.

Синтаксисът на reduce()метода е:

 arr.reduce(callback(accumulator, currentValue), initialValue)

Тук arr е масив.

намаляване () Параметри

В reduce()метода се в:

  • callback - Функцията, която трябва да се изпълни за всеки елемент на масив (с изключение на първия елемент, ако не е предвидено InitialValue). Поема
    • акумулатор - Той натрупва връщаните стойности на обратно извикване.
    • currentValue - Текущият елемент, който се предава от масива.
  • InitialValue (по избор) - Стойност, която ще бъде предадена callback()при първо извикване. Ако не е предоставен, първият елемент действа като акумулатор при първото повикване и callback()няма да се изпълни върху него.

Забележка: Извикването reduce()на празен масив без InitialValue ще хвърли TypeError.

Върната стойност от намаление ()

  • Връща единичната стойност, получена след намаляване на масива.

Бележки :

  • reduce() изпълнява дадената функция за всяка стойност отляво надясно.
  • reduce() не променя оригиналния масив.
  • Почти винаги е по-безопасно да се осигури initialValue.

Пример 1: Сума от всички стойности на масива

 const numbers = (1, 2, 3, 4, 5, 6); function sum_reducer(accumulator, currentValue) ( return accumulator + currentValue; ) let sum = numbers.reduce(sum_reducer); console.log(sum); // 21 // using arrow function let summation = numbers.reduce( (accumulator, currentValue) => accumulator + currentValue ); console.log(summation); // 21

Изход

 21 21

Пример 2: Изваждане на числа в масив

 const numbers = (1800, 50, 300, 20, 100); // subtract all numbers from first number // since 1st element is called as accumulator rather than currentValue // 1800 - 50 - 300 - 20 - 100 let difference = numbers.reduce( (accumulator, currentValue) => accumulator - currentValue ); console.log(difference); // 1330 const expenses = (1800, 2000, 3000, 5000, 500); const salary = 15000; // function that subtracts all array elements from given number // 15000 - 1800 - 2000 - 3000 - 5000 - 500 let remaining = expenses.reduce( (accumulator, currentValue) => accumulator - currentValue, salary ); console.log(remaining); // 2700

Изход

 1330 2700

Този пример ясно обяснява разликата между предаване на начална стойност и непропускане на начална стойност.

Пример 3: Премахване на дублиращи се елементи от масива

 let ageGroup = (18, 21, 1, 1, 51, 18, 21, 5, 18, 7, 10); let uniqueAgeGroup = ageGroup.reduce(function (accumulator, currentValue) ( if (accumulator.indexOf(currentValue) === -1) ( accumulator.push(currentValue); ) return accumulator; ), ()); console.log(uniqueAgeGroup); // ( 18, 21, 1, 51, 5, 7, 10 )

Изход

 (18, 21, 1, 51, 5, 7, 10)

Пример 4: Групиране на обекти по свойство

 let people = ( ( name: "John", age: 21 ), ( name: "Oliver", age: 55 ), ( name: "Michael", age: 55 ), ( name: "Dwight", age: 19 ), ( name: "Oscar", age: 21 ), ( name: "Kevin", age: 55 ), ); function groupBy(objectArray, property) ( return objectArray.reduce(function (accumulator, currentObject) ( let key = currentObject(property); if (!accumulator(key)) ( accumulator(key) = (); ) accumulator(key).push(currentObject); return accumulator; ), ()); ) let groupedPeople = groupBy(people, "age"); console.log(groupedPeople);

Изход

 („19“: ((име: „Дуайт“, възраст: 19)), „21“: ((име: „Джон“, възраст: 21), (име: „Оскар“, възраст: 21)), „ 55 ': ((име:' Оливър ', възраст: 55), (име:' Майкъл ', възраст: 55), (име:' Кевин ', възраст: 55)))

Препоръчително четене: JavaScript Array reduceRight ()

Интересни статии...