Массив JavaScript reduce () — это встроенный метод, который выполняет функцию reducer для каждого элемента массива, что приводит к единственному выходному значению. Метод reduce () сокращает массив до одного значения. Метод reduce () выполняет предоставленную функцию для каждого значения массива (слева направо). Возвращаемое значение функции сохраняется в общем виде.
Общие сведения о сокращении массива JavaScript
Метод Javascript reduce () не выполняется функция для элементов массива без значений. Метод reduce () сокращает массив до одного значения. Метод reduce () выполняет предусмотренную функцию для каждого значения массива (слева направо). Возвращаемое значение функции сохраняется в аккумуляторе (результат/итог).
Синтаксис метода reduce () следующий.
Синтаксис
array.reduce (function (total, currentValue, currentIndex, arr), initialValue)
Параметры
Аргумент total является обязательным . Это начальное значение или ранее возвращенное значение функции.
CurrentValue — это обязательный аргумент. Это значение текущего элемента в массиве.
currentIndex — это необязательный аргумент. Это индекс текущего элемента.
arr — необязательный аргумент. Это объект массива, которому принадлежит текущий элемент.
initialValue является необязательным аргументом. Это значение, которое нужно передать функции в качестве начального значения.
В первый раз обратный вызов вызывается total и currentValue может быть одним из двух значений. Если initialValue предоставляется при вызове метода reduce (), тогда общая сумма будет равна initialValue и currentValue. будет равно первому значению в массиве.
Если не указано initialValue , то общее будет равен первому элементу в массиве, а currentValue будет равен второму.
Пример
Давайте рассмотрим простой пример метода уменьшения () массива .
Создайте файл с именем app.js и напишите следующий код внутри файла app.js . Мы используем Node.js для запуска файла и отображения вывода на терминале.
//app.jslet arr = [1, 2, 3, 4, 5]; let sum = 0 ; for (var i = 0; iИтак, в приведенном выше примере мы использовали цикл for для суммирования всех элементов массива. Мы можем сделать то же самое, используя метод JavaScript reduce ().
//app. jslet arr = [1, 2, 3, 4, 5]; let sum = arr.reduce ((x, y) => x + y); console.log (sum);Теперь запустите файл, и на выходе все равно будет 15.
Output
![]()
Если массив пуст и у него нет initialValue, то будет сгенерирована ошибка TypeError. Если в массиве только один элемент (независимо от позиции) и не указано initialValue , или если указано initialValue, но массив пуст. Единственное значение будет возвращено без вызова функции обратного вызова .
Итак, это работает следующим образом.
[1, 2 , 3, 4, 5] .reduce (function (total, currentValue, currentIndex, array) {return total + currentValue;});Значение, возвращаемое функцией reduce (), будет соответствовать последний вызов обратного вызова (15).
Сумма значений в массиве объектов
Напишите следующий код.
//app.jslet initialValue = 0; let objArray = [{x: 1}, {x: 2}, {x: 3}, {x: 4}, {x: 5},] let sum = objArray.reduce (function (total, currentValue) {return total + currentValue.x;}, initialValue); console.log (sum);Итак, в приведенном выше примере мы определили initialValue равным 0, а затем передали значения объекта следующему, а затем он суммирует все значения всех объектов и возвращает результат.
Output
![]()
Сглаживание массива массивов в Javasc ript
Чтобы сгладить массив массивов в Javascript , мы можем использовать массив Javascript reduce () метод. Метод reduce () для объединения массива массивов в один массив с отдельными элементами.
//app.jslet flattened = [[1, 2], [3, 4], [5 , 6]] .reduce ((total, currentValue) => total.concat (currentValue), []); console.log (сглаженный);Вывод
![]()
В приведенном выше примере мы определили два -dimensional массив, а затем используйте метод reduce (), чтобы сгладить этот массив в одномерный массив с помощью метода array.concat ().
Метод concat принимает значения одно за другим и помещает в пустой массив, и, следовательно, все отдельные значения были помещены в пустой массив, и, наконец, мы получаем сплющенный массив.
Группировка объектов Javascript по свойству
Теперь в этом примере мы сгруппируем объекты по их возрастным номерам. Поначалу это довольно проблематичный пример, но после того, как вы его поймете, вам станет легко.
//app.jsconst people = [{name: 'Krunal', age: 25} , {имя: 'Рушикеш', возраст: 25}, {имя: 'Анкит', возраст: 24}]; const groupBy = (objectArray, property) => {return objectArray.reduce (function (total, obj) {let key = obj [свойство]; if (! total [key]) {total [key] = [];} total [key]. push (obj); общая сумма возврата; }, {});} let groupedPeople = groupBy (people, 'age'); console.log (groupedPeople);В приведенном выше примере будет сформирован массив объектов, ключом которых является возрастной номер. , а его свойства - это объекты с тем же возрастным номером. Поэтому мы группируем людей по возрасту.
Вывод
Вы можете выполнять сложные операции, используя метод reduce (). Один из самых ярких примеров - Redux. Он использует тот же шаблон.
Наконец, пример с массивом JavaScript reduce () завершен.
См. также
Javascript array push ()
Javascript array filter ()
Javascript array map ()
Массив Javascript forEach ()
Массив Javascript unshift ()