Как из массива объектов создать объект с ключами
Из API ответа я получаю данные в виде:
const arr = [
{
product_id: 1,
name: 'John'
},
{
product_id: 1,
name: 'Jane'
},
{
product_id: 2,
name: 'Mark'
},
{
product_id: 2,
name: 'Thomas'
}]
Для построения категорий товаров в React компонентах было бы удобнее остортировать данные в следующем виде:
const obj = {
1: [
{
product_id: 1,
name: 'John'
},
{
product_id: 1,
name: 'Jane'
}
],
2: [
{
product_id: 2,
name: 'Mark'
},
{
product_id: 2,
name: 'Thomas'
}
]
Вопрос соответствующий: как это можно грамотно сделать?
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
const arr = [
{ product_id: 1, name: 'John' },
{ product_id: 1, name: 'Jane' },
{ product_id: 2, name: 'Mark' },
{ product_id: 2, name: 'Thomas' }
];
const obj = arr.reduce(
(r, i) => ((r[i.product_id] || (r[i.product_id] = [])).push(i), r),
{}
);
console.log(obj);
const arr = [
{ product_id: 1, name: 'John' },
{ product_id: 1, name: 'Jane' },
{ product_id: 2, name: 'Mark' },
{ product_id: 2, name: 'Thomas' }
];
const obj = {};
for (let i = 0; i < arr.length; i++) {
let key = arr[i].product_id;
let items = obj[key];
if (!items) {
items = [];
obj[key] = items;
}
items.push(arr[i]);
}
console.log(obj);