,

Метод reduce() в JavaScript: Изменение, агрегация и трансформация массивов

Метод reduce() в JavaScript - theVolkov

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

Аргументы:

callback (обязательный): Функция, которая будет применяться к элементам массива. Принимает четыре аргумента:

  • Аккумулятор (accumulator): Значение, которое накапливает результат после каждой итерации. Изначально равно начальному значению или первому элементу массива, если начальное значение не указано.
  • Текущий элемент (currentValue): Текущий обрабатываемый элемент массива.
  • Индекс элемента (index) — Необязательный аргумент: Индекс текущего элемента в массиве.
  • Исходный массив (array) — Необязательный аргумент: Ссылка на исходный массив.

initialValue (необязательный): Начальное значение аккумулятора. Если этот аргумент не указан, первый элемент массива будет использован в качестве начального значения аккумулятора.

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

// Пример 1: Суммирование чисел в массиве
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
// Результат: sum = 15

// Пример 2: Конкатенация строк из массива
const strings = ["Hello", " ", "world", "!"];
const concatenatedString = strings.reduce((accumulator, currentValue) => {
  return accumulator + currentValue;
});
// Результат: concatenatedString = "Hello world!"

// Пример 3: Преобразование в объект с использованием аргумента array
const emojis = ["😀", "🍉", "🌼"];
const emojiInfo = emojis.reduce((accumulator, emoji, index, array) => {
  accumulator[`emoji${index}`] = { emoji, position: index, totalEmojis: array.length };
  return accumulator;
}, {});
// Результат: emojiInfo = { emoji0: { emoji: "😀", position: 0, totalEmojis: 3 }, ... }

// Пример 4: Создание нового массива на основе исходного массива
const numbers = [1, 2, 3, 4, 5];
const doubledAndSquared = numbers.reduce((accumulator, currentValue) => {
  const doubled = currentValue * 2;
  const squared = doubled * doubled;
  accumulator.push(squared);
  return accumulator;
}, []);
// Результат: doubledAndSquared = [4, 16, 36, 64, 100]

Использование метода reduce() в React.js

React.js

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

Допустим, у нас есть массив объектов, представляющих товары в корзине покупателя. Каждый объект содержит информацию о товаре, такую как название и цена. Наша задача — подсчитать общую сумму всех покупок в корзине и отобразить ее на экране.

Применение метода reduce() позволяет нам эффективно агрегировать данные и предоставлять пользователям информацию о стоимости их покупок в интернет-магазинах 🛒

import React from 'react';

const ShoppingCart = () => {
  // Массив объектов с товарами в корзине
  const cartItems = [
    { id: 1, name: 'Smartphone', price: 499.99 },
    { id: 2, name: 'Headphones', price: 99.99 },
    { id: 3, name: 'Charging Cable', price: 9.99 }
  ];

  // Используем метод reduce() для подсчета общей суммы
  const totalAmount = cartItems.reduce((total, item) => total + item.price, 0);

  return (
    <div>
      <h1>Your Shopping Cart</h1>
      <ul>
        {cartItems.map(item => (
          <li key={item.id}>
            {item.name} - ${item.price}
          </li>
        ))}
      </ul>
      <h2>Total: ${totalAmount.toFixed(2)}</h2>
    </div>
  );
};

export default ShoppingCart;

Что у нас в итоге получилось:

В этом простом примере мы используем метод reduce() для подсчета общей суммы всех товаров в корзине. Мы также используем метод map() для отображения списка товаров и их цен. Общая сумма выводится внизу списка с округлением до двух знаков после запятой.