Возможно, вы знакомы с методом 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. Подробнее можно прочитать здесь. Спасибо!