Возможно, вы знакомы с методом filter() или методом map() в JavaScript. Но использовали ли вы раньше метод reduce()? Метод reduce() более мощный, чем вы знали раньше. Вы можете решить проблемы с помощью метода reduce() так же, как и с filter()методомили map() метод в JavaScript. Давайте погрузимся…

Array.prototype.reduce

Метод reduce() выполняет предоставленную пользователем функцию обратного вызова «reducer» для каждого элемента массива, передавая возвращаемое значение из вычисления предыдущего элемента. Конечным результатом выполнения редуктора для всех элементов массива является одно значение. — Веб-документы MDN

Синтаксис:

reduce(callbackFn, initialValue)
// Arrow function
reduce((previousValue, currentValue, currentIndex, array) => { ... }, initialValue)
// Inline callback function
reduce(function callbackFn(previousValue, currentValue, currentIndex, array) { ... }, initialValue)

callbackFn: функция-редуктор, принимающая четыре аргумента.

  • previousValue: значение, полученное в результате предыдущего вызова callbackFn.
  • currentValue: значение текущего элемента.
  • currentIndex(optional):текущий индекс
  • массив(optional): исходный массив

initialValue(optional):значение, которым инициализируется previousValue при первом вызове callbackFn.

Если caseinitialValue не указан, previousValue инициализируется первым значением в массиве, а currentValue инициализируется вторым значением в массиве. (Примечания: это выдаст TypeError, если в массиве нет элементов)

Array.prototype.reduceRight

Метод reduceRight() применяет функцию к аккумулятору и каждому значению массива (справа налево), чтобы свести его к одному значению.

То же самое с методом reduce(), за исключением направления при обходе.

Несколько примеров с использованием метода reduce()

Использование метода reduce() для реализации методов map() и filter()

Реализовать метод reduce() с помощью цикла for

Реализация метода reduceRight() такая же. Вы можете видеть это здесь".

Спасибо за чтение. Я надеюсь, что эта статья будет полезна для вас. Если вы видите какие-то ошибки в посте, не стесняйтесь, дайте мне знать, я проверю их еще раз и исправлю.

Меня зовут Давид, я веб-разработчик. Я люблю технологии, и я поделюсь другими статьями о веб-разработке, ReactJS и JavaScript. Подробнее можно прочитать здесь. Спасибо!