19.04.2021, 13:25
|
Аспирант
|
|
Регистрация: 19.05.2020
Сообщений: 46
|
|
Как сделать следующую трансформацию данных в javascript?
Всем привет.
Есть исходный массив:
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
},
]
Структура, которую нужно получить:
export const orders = [
{
date: '2017-10-16',
documents: [
{
date: "2017-10-16 12:07:07",
docId: 564564867361367,
docTypesName: 'Приход',
products: [
{
"image": "https://www.komus.ru/medias/sys_master/root/hd3/h93/9286922043422.jpg",
"name": "Молочный Изюм 100",
"price": 102,
"quantity": 45,
},
{
"image": "https://mariupolcena.com/files/products/9ff44136e6ccb0afb404ad26f727e67d.jpeg",
"name": "Русская картошка чедар 50",
"price": 46.3,
"quantity": 45,
}
]
},
{
date: "2017-10-16 12:07:07",
docId: 564564867361367,
docTypesName: 'Расход',
products: [
{
"image": "https://mariupolcena.com/files/products/9ff44136e6ccb0afb404ad26f727e67d.jpeg",
"name": "Русская картошка чедар 50",
"price": 46.3,
"quantity": 45,
}
]
}
]
},
{
date: '2017-11-29',
documents: [
{
date: "2017-11-29 17:26:57",
docId: 564564867361365,
docTypesName: 'Расход',
products: [
{
"image": "https://www.komus.ru/medias/sys_master/root/hd3/h93/9286922043422.jpg",
"name": "Молочный Изюм 100",
"price": 102,
"quantity": 6,
}
]
},
]
}
]
Подскажите пожалуйста, как сделать данное преобразование?
|
|
19.04.2021, 15:06
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
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>
|
|
19.04.2021, 15:29
|
Аспирант
|
|
Регистрация: 19.05.2020
Сообщений: 46
|
|
Большое спасибо.
|
|
|
|