javascript中相同对象名的总和

嗨朋友我是javascript的初学者我如何总结相同的n对象名称对应的值并将结果推送到新的数组。这是示例对象

var obj_1 ={'delivered':10,'due':11,'team_name':'UK'}; var obj_2 ={'delivered':10,'due':11,'team_name':'US'}; var obj_nth ={'delivered':10,'due':11,'team_name':'UK'};

但我希望这个输出[UK:{'delivered':20,'due':22},US:{'delivered':10,'due':11}] ,所以请帮助我,接下来我会做什么

您可以先创建对象数组,然后使用reduce()返回一个对象。

 var obj_1 ={'delivered':10,'due':11,'team_name':'UK'}; var obj_2 ={'delivered':10,'due':11,'team_name':'US'}; var obj_nth ={'delivered':10,'due':11,'team_name':'UK'}; var result = [obj_1, obj_2, obj_nth].reduce(function(r, e) { if(!r[e.team_name]) { r[e.team_name] = {delivered:0,due:0} } r[e.team_name].delivered += e.delivered r[e.team_name].due += e.due return r }, {}) console.log(result) 
 const newArray = initialArray.map(({team_name, ...restProps}) => { return { [team_name]: {...restProps} }; }); 

看到:

  • 箭头function
  • 传播运营商
  • Array.prototype.map
  • 计算属性名称
 var obj_1 ={'delivered':10,'due':11,'team_name':'UK'}; var obj_2 ={'delivered':10,'due':11,'team_name':'US'}; var obj_nth ={'delivered':10,'due':11,'team_name':'UK'}; function sum_all() { var sum={}; for(var i=0;i 

您的控制台输出将是:

 sum Object UK: Object delivered: 20 due: 22 US: Object delivered: 10 due: 11 

将这些对象存储在一个数组中 ,例如:

 var myObjects = [ {'delivered':10,'due':11,'team_name':'UK'}, {'delivered':10,'due':11,'team_name':'US'}, {'delivered':10,'due':11,'team_name':'UK'} ]; 

创建一个新对象,您将在其中存储结果:

 var results = {}; 

然后使用for循环遍历数组( 因为它通常更快 )并根据team_name添加其他属性:

 for (var i = 0; i <= myObjects.length; i++) { if (typeof results[myObjects[i].team_name] !== undefined) { results[myObjects[i]].delivered += myObjects[i].delivered; results[myObjects[i]].due += myObjects[i].due; } else { // Set 0 to these properties if the entry didn't exist results[myObjects[i]].delivered = 0; results[myObjects[i]].due = 0; } }