给出以下数组:
const array = [
{
date: '2016-12-13T00:00:00.000Z',
stats: [
{
name: 'Soft Drinks',
sold: 34,
},
{
name: 'Snacks',
sold: 3,
},
{
name: 'Coffee and warm drinks',
sold: 26,
},
],
},
{
date: '2016-12-14T00:00:00.000Z',
stats: [
{
name: 'Soft Drinks',
sold: 34,
},
{
name: 'Snacks',
sold: 3,
},
{
name: 'Coffee and warm drinks',
sold: 26,
},
],
},
];
我想将stats数组中的售出值相加。 最终的数组应如下所示:
const array = [
stats: [
{
name: 'Soft Drinks',
sold: 68,
},
{
name: 'Snacks',
sold: 6,
},
{
name: 'Coffee and warm drinks',
sold: 52,
},
],
]
所以基本上就像启动数组日期一样,总结每天的统计数据,如果名称匹配则+ =值。
我到目前为止:
const result = {};
array.forEach(
(item) => {
const { stats } = item;
stats.forEach((item) => {
Object
.keys(item)
.forEach((value) => {
result[value] = (result[value] || 0) + item[value];
});
});
});
console.log(result);
但是我在第二轮比赛中输了。实现结果的正确方法是什么?