Что такое array.reduce() в JavaScript ?

Reduce — это метод массива, который может преобразовывать или уменьшать данные в массиве и возвращать один выходной результат.

Синтаксис:

array.reduce( reducerfunction ( accumilator, item, index, array ), initalAccumilatorValue )
Войти в полноэкранный режим Выйти из полноэкранного режима
  • accumulator — переменная, которая будет изменяться в каждом цикле по массиву.
  • item — текущий элемент массива.
  • index означает индекс текущего элемента в массиве.
  • array означает исходный массив.
  • Функция reducer показывает, как изменяется аккумулятор.

Где мы можем использовать reduce?

Представим, что у нас есть входной массив, содержащий информацию о пользователях, т.е. имя, возраст и т.д., и нам нужно сгруппировать их по возрасту.

    const array = [
        { name: "John", age: "20" },
        { name: "Mary", age: "20" },
        { name: "Peter", age: "50" },
        { name: "Sally", age: "50" },
    ];

Вход в полноэкранный режим Выход из полноэкранного режима

если бы нам нужно было сгруппировать их по возрасту.

    {
        20: ["John","Mary"],
        50: ["Peter","Sally"]
    }

Войти в полноэкранный режим Выход из полноэкранного режима

мы могли бы использовать метод array.reduce().


    const result = array.reduce((acc, curr) => {
    if (!acc[curr.age]) { //chk if age exist in accumilator
        acc[curr.age] = []; //createing empty array at accumelator.age
    }
    acc[curr.age].push(curr.name); // pushing name to appropriate accumulator.age
    return acc;
    }, {});

    console.log(result);

Войти в полноэкранный режим Выход из полноэкранного режима

Как это работает?

Когда мы вызываем метод array.reduce(), мы передаем два параметра.

  1. функция аккумулятора
  2. начальное значение для аккумулятора

Функция accumulator определяет, какие действия необходимо произвести над значением (аккумулятором), чтобы получить желаемое конечное уменьшенное значение

в приведенном выше примере

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

Заключение

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

Оцените статью
devanswers.ru
Добавить комментарий