Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как правильно сформировать данные? (https://javascript.ru/forum/dom-window/77894-kak-pravilno-sformirovat-dannye.html)

darktowerk56c 29.06.2019 05:46

Как правильно сформировать данные?
 
Вложений: 1
Всем привет. Ребята, подскажите, пожалуйста, как на основании следующих данных:
[
  {
    "date": "2017-10-16 12:07:07",
    "name_doc_type": "Расход",
    "id": 564564867361367,
    "image": "http://ecosned.ru/image/cache/catalog/categories/iz_fermerskogo_moloka/tvorog/7/ge-catalog-categories-iz_fermerskogo_moloka-tvorog-tvorozhnaya_massa_s_kuragoy-800x800.jpg",
    "name": "Творог 9% с курагой",
    "price": 121.0,
    "quantity": 45,
    "removed": 0
  },
  {
    "date": "2017-10-16 15:09:08",
    "name_doc_type": "Расчет",
    "id": 564564867361368,
    "image": "https://images.ua.prom.st/50389447_w640_h640_ncheskaya_s_grushej_200_g..jpg",
    "name": "Молочный Груша 200",
    "price": 180.0,
    "quantity": 65,
    "removed": 0
  },
  {
    "date": "2017-10-16 15:09:08",
    "name_doc_type": "Расчет",
    "id": 564564867361368,
    "image": "https://www.komus.ru/medias/sys_master/root/hd3/h93/9286922043422.jpg",
    "name": "Молочный Изюм 100",
    "price": 102.0,
    "quantity": 72,
    "removed": 0
  },
  {
    "date": "2017-10-16 18:11:09",
    "name_doc_type": "Приход",
    "id": 564564867361369,
    "image": "http://irecommend.ru/sites/default/files/imagecache/copyright1/user-images/299388/Ydfgl76IXe0nEM2gO6Ww.JPG",
    "name": "Молочный Традиция 100",
    "price": 115.0,
    "quantity": 60,
    "removed": 0
  },
  {
    "date": "2017-10-16 18:11:09",
    "name_doc_type": "Приход",
    "id": 564564867361369,
    "image": "https://www.utkonos.ru/images/photo/3054/3054289H.jpg",
    "name": "Аленка карамель 100г Акционный товар Большая скидка",
    "price": 73.9,
    "quantity": 99,
    "removed": 0
  },
  {
    "date": "2017-11-29 19:31:03",
    "name_doc_type": "Приход",
    "id": 564564867361363,
    "image": "https://tashkentcena.com/files/products/893eebe7b69146290886dc504a3328ef.jpeg",
    "name": "Горький коньяк 100",
    "price": 336.0,
    "quantity": 94,
    "removed": 0
  },
  {
    "date": "2017-11-29 19:31:03",
    "name_doc_type": "Приход",
    "id": 564564867361363,
    "image": "https://www.utkonos.ru/images/photo/3176/3176192H.jpg",
    "name": "Сыр 125г",
    "price": 131.0,
    "quantity": 64,
    "removed": 0
  },
  {
    "date": "2017-11-29 19:31:03",
    "name_doc_type": "Приход",
    "id": 564564867361363,
    "image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
    "name": "Молочный Яблоко 100",
    "price": 25.1,
    "quantity": 52,
    "removed": 0
  },
  {
    "date": "2017-11-29 19:31:03",
    "name_doc_type": "Приход",
    "id": 564564867361363,
    "image": null,
    "name": "Парус апельсин 1л",
    "price": 150.0,
    "quantity": 43,
    "removed": 1
  }
]

сформировать вот такую структуру данных:

Я имею в виду, что из исходных данных мне нужно сделать что-то вроде вот этого:
const data = [
    {
        id: 1,
        date: '2017-10-16',
        docs: [
            {
                "date": "2017-10-16 18:11:09",
                "name_doc_type": "Приход",
                "id": 564564867361369,
                "image": "https://www.utkonos.ru/images/photo/3054/3054289H.jpg",
                "name": "Аленка карамель 100г Акционный товар Большая скидка",
                "price": 73.9,
                "quantity": 99,
                "removed": 0
            },
            {
                "date": "2017-10-16 18:11:09",
                "name_doc_type": "Приход",
                "id": 564564867361369,
                "image": "https://mariupolcena.com/files/products/9ff44136e6ccb0afb404ad26f727e67d.jpeg",
                "name": "Русская картошка чедар 50",
                "price": 46.3,
                "quantity": 51,
                "removed": 0
            },
            {
                "date": "2017-10-16 12:07:07",
                "name_doc_type": "Расход",
                "id": 564564867361367,
                "image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
                "name": "Молочный Яблоко 100",
                "price": 25.1,
                "quantity": 44,
                "removed": 0
            }
        ]
    }
]

Следующий объект, это будет следующая дата с относящимися к ней данными и так далее.

рони 29.06.2019 08:10

darktowerk56c,
const json = [
  {
    "date": "2017-10-16 12:07:07",
    "name_doc_type": "Расход",
    "id": 564564867361367,
    "image": "http://ecosned.ru/image/cache/catalog/categories/iz_fermerskogo_moloka/tvorog/7/ge-catalog-categories-iz_fermerskogo_moloka-tvorog-tvorozhnaya_massa_s_kuragoy-800x800.jpg",
    "name": "Творог 9% с курагой",
    "price": 121.0,
    "quantity": 45,
    "removed": 0
  },
  {
    "date": "2017-10-16 15:09:08",
    "name_doc_type": "Расчет",
    "id": 564564867361368,
    "image": "https://images.ua.prom.st/50389447_w640_h640_ncheskaya_s_grushej_200_g..jpg",
    "name": "Молочный Груша 200",
    "price": 180.0,
    "quantity": 65,
    "removed": 0
  },
  {
    "date": "2017-10-16 15:09:08",
    "name_doc_type": "Расчет",
    "id": 564564867361368,
    "image": "https://www.komus.ru/medias/sys_master/root/hd3/h93/9286922043422.jpg",
    "name": "Молочный Изюм 100",
    "price": 102.0,
    "quantity": 72,
    "removed": 0
  },
  {
    "date": "2017-10-16 18:11:09",
    "name_doc_type": "Приход",
    "id": 564564867361369,
    "image": "http://irecommend.ru/sites/default/files/imagecache/copyright1/user-images/299388/Ydfgl76IXe0nEM2gO6Ww.JPG",
    "name": "Молочный Традиция 100",
    "price": 115.0,
    "quantity": 60,
    "removed": 0
  },
  {
    "date": "2017-10-16 18:11:09",
    "name_doc_type": "Приход",
    "id": 564564867361369,
    "image": "https://www.utkonos.ru/images/photo/3054/3054289H.jpg",
    "name": "Аленка карамель 100г Акционный товар Большая скидка",
    "price": 73.9,
    "quantity": 99,
    "removed": 0
  },
  {
    "date": "2017-11-29 19:31:03",
    "name_doc_type": "Приход",
    "id": 564564867361363,
    "image": "https://tashkentcena.com/files/products/893eebe7b69146290886dc504a3328ef.jpeg",
    "name": "Горький коньяк 100",
    "price": 336.0,
    "quantity": 94,
    "removed": 0
  },
  {
    "date": "2017-11-29 19:31:03",
    "name_doc_type": "Приход",
    "id": 564564867361363,
    "image": "https://www.utkonos.ru/images/photo/3176/3176192H.jpg",
    "name": "Сыр 125г",
    "price": 131.0,
    "quantity": 64,
    "removed": 0
  },
  {
    "date": "2017-11-29 19:31:03",
    "name_doc_type": "Приход",
    "id": 564564867361363,
    "image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
    "name": "Молочный Яблоко 100",
    "price": 25.1,
    "quantity": 52,
    "removed": 0
  },
  {
    "date": "2017-11-29 19:31:03",
    "name_doc_type": "Приход",
    "id": 564564867361363,
    "image": null,
    "name": "Парус апельсин 1л",
    "price": 150.0,
    "quantity": 43,
    "removed": 1
  }
];

let data = json.reduce((obj, el)=>{
let date = el.date.split(" ")[0];
if(obj[date]) obj[date].push(el);
else {
    let docs = [el], ob = {date, docs},
    id = obj.data.push(ob);
    ob.id = id;
    obj[date] = docs;
}
return obj
}, {data : []}).data;
console.log(data)


Часовой пояс GMT +3, время: 13:22.