循环遍历对象数组,并总结其中的值

时间:2016-12-13 14:49:49

标签: javascript arrays object ecmascript-6

给出以下数组:

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);

但是我在第二轮比赛中输了。实现结果的正确方法是什么?

0 个答案:

没有答案