После того, как я использую reduce()
для группировки объектов в массиве по месяцу-году:
let groupByMonth;
if (newlistTaskEvaluation) {
groupDataByMonth = newlistTaskEvaluation.reduce((groups, item) => {
groups[item.time] = [...groups[item.time] || [], item];
return groups;
}, {});
}
У меня есть массив объектов событий, отформатированный по месяцу-году группы следующим образом:
groupByMonth = {
'7-2020': [ //july
{
time: "7-2020",
task: [
{ code: "p1", value: 123 },
{ code: "p2", value: 234 },
]
},
{
time: "7-2020",
task: [
{ code: "p1", value: 345 },
{ code: "p2", value: 456 },
]
},
],
'8-2020': [ //august
{
time: "8-2020",
task: [
{ code: "p1", value: 567 },
{ code: "p2", value: 678 },
]
},
{
time: "8-2020",
task: [
{ code: "p1", value: 789 },
{ code: "p2", value: 999 },
]
},
]
}
Как сгруппировать объект массива по коду ключа, времени и общей сумме по значению?
Ожидаемый результат:
output = [
{
time: "7-2020", //total month 7-2020
task: [
{ code: "p1", valueSum: 468 }, // 123 + 345
{ code: "p2", valueSum: 690 }, // 234 +456
]
},
{
time: "8-2020",
task: [
{ code: "p1", valueSum: 1356 }, // 567 + 789
{ code: "p2", valueSum: 1677 }, // 999 +678
]
}
]
Пожалуйста, помогите мне.