Показать сообщение отдельно
  #2 (permalink)  
Старый 19.04.2021, 15:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

dc65k,
<script>
const orders = [
    {
        "date": "2017-10-16 12:07:07",
        "docTypesName": "Приход",
        "docId": 564564867361367,
        "image": "https://www.komus.ru/medias/sys_master/root/hd3/h93/9286922043422.jpg",
        "name": "Молочный Изюм 100",
        "price": 102,
        "quantity": 45,
        "removed": 0
    },
    {
        "date": "2017-10-16 12:07:07",
        "docTypesName": "Приход",
        "docId": 564564867361367,
        "image": "https://mariupolcena.com/files/products/9ff44136e6ccb0afb404ad26f727e67d.jpeg",
        "name": "Русская картошка чедар 50",
        "price": 46.3,
        "quantity": 45,
        "removed": 0
    },

    {
        "date": "2017-10-16 12:07:07",
        "docTypesName": "Расход",
        "docId": 564564867361367,
        "image": "https://mariupolcena.com/files/products/9ff44136e6ccb0afb404ad26f727e67d.jpeg",
        "name": "Русская картошка чедар 50",
        "price": 46.3,
        "quantity": 45,
        "removed": 0
    },

    {
        "date": "2017-11-29 17:26:57",
        "docTypesName": "Расход",
        "docId": 564564867361365,
        "image": "https://www.komus.ru/medias/sys_master/root/hd3/h93/9286922043422.jpg",
        "name": "Молочный Изюм 100",
        "price": 102,
        "quantity": 6,
        "removed": 0
    },
]
const f = a => a.reduce((a, b) => {
    let {date} = b ;
    date = date.split(/\s+/)[0];
    if (!a[date]) a.accumulator.push({date, documents: a[date] = []});
    let {date : c, docTypesName, docId} = b;
    if (!a[date][[c, docTypesName, docId]]) a[date].push({'date' : c, docTypesName, docId,products : a[date][[c , docTypesName, docId]] = []});
    let {image, name, price, quantity} = b;
    a[date][[c, docTypesName, docId]].push({image, name, price, quantity})
    return a;
}, {accumulator: []}).accumulator;

let a = f(orders);

document.write(`<pre>${JSON.stringify(a, "", 1)}</pre>`)
    </script>
Ответить с цитированием