Что делает метод reduce js?

Аватар пользователя Olga Pejenkova
Olga Pejenkova
15 марта 2024

Метод reduce() в JavaScript используется для преобразования массива в одно значение (например, число, строку или объект) путем применения функции к каждому элементу массива и накоплению результата.

Синтаксис метода reduce() выглядит следующим образом:

array.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
  • callback - функция, которая будет применена к каждому элементу массива. Она принимает четыре аргумента: accumulator (аккумулятор), currentValue (текущий элемент), index (индекс текущего элемента) и array (исходный массив).
  • initialValue (необязательный) - начальное значение аккумулятора.

Пример использования метода reduce():

const numbers = [1, 2, 3, 4, 5];

// Сумма всех элементов массива
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // => 15

// Поиск максимального значения в массиве
const max = numbers.reduce((accumulator, currentValue) => Math.max(accumulator, currentValue), -Infinity);
console.log(max); // => 5

// Преобразование массива строк в одну строку
const words = ['Hello', 'world', '!'];
const sentence = words.reduce((accumulator, currentValue) => accumulator + ' ' + currentValue, '');
console.log(sentence); // => Hello world !

В данном примере метод reduce() используется для нахождения суммы элементов массива, поиска максимального значения и объединения строк в одну строку.

1 0

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

Рассмотрим пример:

// Корзина товаров на сайте
const cart = [
    {name:'Milk', price: 25},
    {name:'Bread', price: 12},
    {name:'Eggs', price: 17},
];

// Как просто посчитать сумму всей корзины? Применим reduce():
const cartTotal = cart.reduce((totalSumm, item) => {
    totalSumm += item.price;
// мы всегда должны возвращать аккумулятор как результат работы над каждым элементом.
    return totalSumm;
// 0 - здесь, это начальное значение totalSumm.
}, 0);
console.log(cartTotal);
// -> 54
1 0
Основы Frontend за 14 дней
  • 72 урока в онлайн-тренажере
  • 4 живых вебинара и масскодинг
  • Помощь наставника на весь период обучения

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

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

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки