Сортировка JSON с преобразованием массива в объект
Всем привет. Надеюсь на помощь) Имеется JSON такого вида:
[
{
"date": "2017-10-16 12:07:07",
"name": "Творог 9% с курагой",
"id": 564564867361351,
"image": "http://www.calorizator.ru/sites/default/files/imagecache/product_512/product/tvorog-14.jpg",
"price": 121,
"quantity": 45,
"removed": 0
},
{
"date": "2017-10-18 12:07:07",
"name": "Молочный Яблоко 100",
"id": 564564867361352,
"image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
"price": 25.1,
"quantity": 44,
"removed": 0
},
{
"date": "2017-10-18 12:07:07",
"name": "Молочный Традиция 100",
"id": 564564867361352,
"image": "http://irecommend.ru/sites/default/files/imagecache/copyright1/user-images/299388/Ydfgl76IXe0nEM2gO6Ww.JPG",
"price": 115,
"quantity": 62,
"removed": 0
},
]
полный JSON лежит здесь https://pastebin.com/vpyMn805
Мне нужно отсортировать этот список сначала по датам, а потом внутри каждой даты уже по ID. Должно получится примерно так:
[
{
"2017-10-16": [
{
564564867361352: [
{
"date": "2017-10-16",
"name": "Творог 9% с курагой",
"id": 564564867361352,
"image": "http://www.calorizator.ru/sites/default/files/imagecache/product_512/product/tvorog-14.jpg",
"price": 121,
"quantity": 45,
"removed": 0
},
{
"date": "2017-10-16",
"name": "Русская картошка чедар 50",
"id": 564564867361352,
"image": "http://www.calorizator.ru/sites/default/files/imagecache/product_512/product/tvorog-14.jpg",
"price": 121,
"quantity": 45,
"removed": 0
}]
}]
},
{
"2017-11-03": [
{
564564867361353: [
{
"date": "2017-11-03",
"name": "Беседа. 50гр",
"id": 564564867361351,
"image": "http://www.calorizator.ru/sites/default/files/imagecache/product_512/product/tvorog-14.jpg",
"price": 121,
"quantity": 45,
"removed": 0
},
{
"date": "2017-11-03",
"name": "Горький коньяк 100",
"id": 564564867361351,
"image": "http://www.calorizator.ru/sites/default/files/imagecache/product_512/product/tvorog-14.jpg",
"price": 121,
"quantity": 45,
"removed": 0
}]
}]
}]
Как сортировать по date я нашел. А вот как дальше сортировать по id ума не приложу.
let result = data.reduce((r, a) => {
r[a.date] = r[a.date] || [];
r[a.date].push(a);
return r;
}, {});
Ответы (1 шт):
Автор решения: vsemozhetbyt
→ Ссылка
Думаю, вам достаточно просто добавить:
for (const key of Object.keys(result)) {
result[key] = result[key].reduce((r, a) => {
r[a.id] = r[a.id] || [];
r[a.id].push(a);
return r;
}, {});
}