У меня есть следующий массив, который содержит список javascript объектов. Я пытаюсь использовать функцию Reduce, чтобы преобразовать его в один объект с вложенными группировками клавиш.
Массив выглядит следующим образом:
[
{
"product": 1,
"date": "2020-01-01",
"price": 100
},
{
"product": 2,
"date": "2020-01-01",
"price": 102
},
{
"product": 1,
"date": "2020-01-02",
"price": 99
},
{
"product": 2,
"date": "2020-01-02",
"price": 92
},
{
"product": 1,
"date": "2020-01-03",
"price": 101
},
{
"product": 2,
"date": "2020-01-03",
"price": 22
}
]
И вот результат, которого я пытаюсь достичь:
{
1:{
"2020-01-01":{
"product": 1,
"date": "2020-01-01",
"price": 100
},
"2020-01-02":{
"product": 1,
"date": "2020-01-02",
"price": 99
},
"2020-01-03":{
"product": 1,
"date": "2020-01-03",
"price": 101
}
},
2:{
"2020-01-01":{
"product": 2,
"date": "2020-01-01",
"price": 102
},
"2020-01-02":{
"product": 2,
"date": "2020-01-02",
"price": 92
},
"2020-01-03":{
"product": 2,
"date": "2020-01-03",
"price": 22
}
}
}
Я попробовал следующее, но я получаю только одну дату для каждого продукта:
pricelist.reduce((obj, item) => {
obj[item['product']] = {};
obj[item['date']][item['product']] = item;
return obj;
}, {});
Не могли бы вы помочь мне понять, что я делаю неправильно?