过滤数组中的项目 - 在 JSON 中添加元素

Filter item in array - Adding elements in JSON

我是 JavaScript 的初学者,我需要:

我有一个如下所示的数组:

[
  {
    name: "Petter",
    totalHour: 14
  }
  {
    name: "Klaus",
    totalHour: 13
  }
  {
    name: "Petter",
    totalHour: 4
  }
  {
    name: "Petter",
    totalHour: 9
  }
  {
    name: "Trevor",
    totalHour: 8
  }
]

在数组中迭代后,我想要:

[
  {
    name: "Petter",
    totalHour: 27
  }
  {
    name: "Klaus",
    totalHour: 13
  }
  {
    name: "Trevor",
    totalHour: 8
  }
]

也就是我想对相同的名字进行分组,加上各自的totalHour。

JavaScript 中有什么方法可以做到这一点吗?

希望这段代码对您有所帮助

var arr = [
  {
    name: "Petter",
    totalHour: 14
  },
  {
    name: "Klaus",
    totalHour: 13
  },
  {
    name: "Petter",
    totalHour: 4
  },
  {
    name: "Petter",
    totalHour: 9
  },
  {
    name: "Trevor",
    totalHour: 8
  }
]

var helper = {};
var result = arr.reduce(function(r, o) {
  var key = o.name;
  
  if(!helper[key]) {
    helper[key] = Object.assign({}, o); // create a copy of o
    r.push(helper[key]);
  } else {
    helper[key].totalHour += o.totalHour;
  }

  return r;
}, []);