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 к каждому значению массива для каждого ключа объекта.
Если это будет полезно для вас, напишите больше о подобных статьях. Спасибо за чтение.