Синтаксис:

array.reduce(callback, initialValue);

Что такое Метод сокращения?

Метод reduce — это мощный инструмент JavaScript, позволяющий "сократить" массив значений в одно значение.

ПРИМЕР 1:

Представьте, что вы готовите смузи, и мы хотим использовать метод reduce, чтобы подсчитать общее количество фруктов, необходимых для нашего смузи.

const fruits = [2, 3, 1, 4, 2];

// Our mixing process: adding and mixing fruits

const totalFruitsNeeded = fruits.reduce((acc, fruit) => {
  return acc + fruits;
}, 0);

В этом примере аккумулятор(acc) — это блендер, в котором хранятся все добавляемые вами фрукты. Любые новые фрукты, которые вы добавляете, смешиваются с тем, что уже находится в блендере, пока не станут единой смесью (смузи), а не разными фруктами, валяющимися повсюду.

  • Мы начинаем с начального значения «0» (пустой блендер).
  • Для каждого фрукта(элемент) в массиве мы добавляем его в блендер (аккумулятор).
  • Процесс смешивания (функция обратного вызова) объединяет текущий фрукт с содержимым блендера, и результатом становится новое содержимое блендера.
  • Затем процесс повторяется снова.

Посмотрите на иллюстрацию ниже, чтобы лучше понять.

Теперь давайте рассмотрим каждую часть "метода сокращения"и что они означают.

array.reduce(callback, initialValue);

- Массив. Это массив, который вы хотите свести к одному значению.

- Обратный вызов: функция, определяющая логику сокращения. Он принимает четыре аргумента: аккумулятор (acc), текущее значение (currentValue), текущий индекс (currentIndex) и сам массив (array).

  • Накопитель (acc):Накапливаемое значение. Он начинается с начального значения (если оно указано) или первого элемента массива. Он хранит результат операции сокращения и обновляется при каждой итерации.
  • Текущее значение: текущий обрабатываемый элемент массива.
  • Текущий индекс:Индекс текущего обрабатываемого элемента.
  • Массив:исходный обрабатываемый массив.
  • Начальное значение:Метод сокращения также содержит начальное значение, которое не является обязательным. Это начальное значение аккумулятора.

Как работает метод reduce:

1. Вы начинаете с начального значения (необязательно) и массива.

2. Метод сокращения проходит через каждый элемент массива.

3. Для каждого элемента вызывается предоставленная функция обратного вызова (которая определяет, что именно происходит с элементами массива). В качестве параметров он принимает аккумулятор и текущий элемент.

4. Функция обратного вызова выполняет операцию (например, сложение, умножение, вычитание, деление или любую указанную операцию) над аккумулятором и текущим элементом. Затем он возвращает новое значение.

5. Возвращенное значение становится новым аккумулятором для следующей итерации.

6. Процесс продолжается до тех пор, пока все элементы не будут обработаны и в качестве результата не будет возвращено конечное значение аккумулятора.

ПРИМЕР 2:

Представьте, что вы кассир и у вас есть массив ежедневных продаж. Вы хотите рассчитать общий объем продаж за неделю.

const dailySales = [120, 85, 150, 200, 95, 130, 175];

const totalSales = dailySales.reduce((total, amount) => total + amount, 0);

console.log("Total Sales:", totalSales); // Output: Total Sales: 955

ПРИМЕР 3:

Представьте себе спортивного тренера, анализирующего результаты спортсменов. Вы хотите найти самый высокий балл.

const scores = [82, 95, 70, 89, 93, 78];

const highestScore = scores.reduce((max, score) => (score > max ? score : max), -Infinity);

console.log("Highest Score:", highestScore); // Output: Highest Score: 95

Подводя итог, можно сказать, что метод сокращения подобен следованию рецепту или методу, шаг за шагом для достижения конечного результата.

Каждое значение влияет на результат, и вы можете использовать аргументы обратного вызова для точной настройки процесса в соответствии с вашими потребностями.

Привет

Я Гиникачукву, и моя миссия - сделать вашу жизнь проще, по одному коду за раз. Я создаю программное обеспечение, которое помогает вашей жизни и бизнесу развиваться, используя JavaScript, React, Node и Angular.

У меня большой опыт контент-маркетинга и технического написания статей, который позволяет мне понимать потребности пользователей и писать технический и/или креативный контент, который поможет вам повысить вовлеченность и коэффициент конверсии.

Свяжитесь со мной в Linkedin и Twitter, чтобы получить больше подобного контента. Вы также можете связаться со мной по Электронной почте, если хотите поработать вместе, задать вопрос, оставить отзыв или предложение.