reduce и reduceRight - функции высшего порядка для перебора массива в Js

Массив можно перебирать не обычными функциями, а другими более продвинутыми...более продвинутые пользователи пользуются именно ими...

 

reduce и reduceRight - функции высшего порядка для перебора массива в Javascript.

Первый метод работает с массивом слева направо, а второй наоборот.

 

Когда вы говорите "reduce" в контексте JavaScript, вы, вероятно, имеете в виду метод массивов "reduce()". Этот метод выполняет редукцию массива к одному значению. 

Синтаксис метода reduce():
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

- function(total, currentValue, currentIndex, arr): Функция, выполняющая редукцию. Она принимает четыре аргумента:
- total: Накапливаемое значение, результат выполнения предыдущих вызовов функции (или значение из параметра initialValue при первом вызове).
- currentValue: Текущий обрабатываемый элемент массива.
- currentIndex (необязательный): Индекс текущего обрабатываемого элемента массива.
- arr (необязательный): Сам массив, по которому происходит итерация.
- initialValue (необязательный): Начальное значение для total. Если он не указан, то первый обход массива начинается с индексом 1, а total становится равным первому элементу.

Может быть и выглядит все сложно, но так как много необязательных элементов, то обычно все упрощается...

Пример использования:
// Сложение всех элементов массива

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((total, current) => total + current, 0);
console.log(sum); // Выведет 15 (1 + 2 + 3 + 4 + 5)

// Построение объекта на основе массива

const data = [
{ id: 1, value: 'a' },
{ id: 2, value: 'b' },
{ id: 3, value: 'c' }
];
const result = data.reduce((obj, item) => {
obj[item.id] = item.value;
return obj;
}, {});
console.log(result); // Выведет { '1': 'a', '2': 'b', '3': 'c' }

 

Вот примеры использования метода reduce() без использования стрелочных функций:

// Сложение всех элементов массива

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce(function(total, current) {
return total + current;
}, 0);
console.log(sum); // Выведет 15 (1 + 2 + 3 + 4 + 5)

// Построение объекта на основе массива

const data = [
{ id: 1, value: 'a' },
{ id: 2, value: 'b' },
{ id: 3, value: 'c' }
];
const result = data.reduce(function(obj, item) {
obj[item.id] = item.value;
return obj;
}, {});
console.log(result); // Выведет { '1': 'a', '2': 'b', '3': 'c' }


В обоих примерах мы использовали анонимные функции вместо стрелочных. В первом примере функция принимает два аргумента total и current и возвращает их сумму. Во втором примере функция принимает obj и item, добавляет в obj новый элемент с ключом item.id и значением item.value, после чего возвращает измененный obj.


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

 

 

 

 

Добавить комментарий


Защитный код
Обновить

Вы здесь: Сайтостроение Создание сайта Javascript reduce и reduceRight - функции высшего порядка для перебора массива в Js