Array Reduce - герой

Array.filter и Array.map можно определить с помощью Array.reduce, но это не их основная цель, поэтому я пишу эту статью.

Array.reduce может отображать объект, а Array.map - нет.

Вы можете сказать, что да. Это правда, но какой тип карты в данном случае - Object.key (Array) .map? да, это массив, и нам нужно сопоставить объект-объект.

Да ты прав .

Array.reduce может возвращать другой сопоставленный объект. Например, давайте рассмотрим пример ниже и посмотрим, как мы можем сопоставить объект с другим объектом, не объявляя множество литералов, изменяемых массивов и переменных, только с помощью Array.reduce.

let originalObject: {
  'key1': [data],
  'key2': [data],
  'keyn': [data]
}

Исходный объект - это объект, в котором у нас есть описанные ключом массивы данных, и нам нужно преобразовать эти данные в зависимости от наших игл.

Так что я должен делать ?

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

let data = {
 ‘0001’: [56,8,7,6,5],
 ‘0002’: [33,66,55,88],
 ‘0003’: [1,2,3,4,5]
}
const add2 = item => item + 2;
let tranformed = Object.keys(data).reduce((acc,index) => {
 acc[index] = data[index].map(add2)
 return acc
},{})
console.log(tranformed) 
// {
  0001: [58, 10, 9, 8, 7],
  0002: [35, 68, 57, 90],
  0003: [3, 4, 5, 6, 7]
}

Мы используем Array.map для возврата нового массива и не ссылаемся на наш результат на свойство родительского объекта.

Итак, мы создали новый объект с отображенными на нем данными, применив add2 к каждому значению массива для каждого ключа объекта.

Если это будет полезно для вас, напишите больше о подобных статьях. Спасибо за чтение.