Сортировка 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;
  }, {});
}
→ Ссылка