[英]Sum of same object name in javascript
Hi friends I'm beginner for javascript how i sum same n no's of object name corresponding value and push the result to new array.see this is sample object 嗨,朋友们,我是javascript的初学者,我如何将相同的对象名称对应的值相加或否,并将结果推送到新的array.see这是示例对象
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'};
but i expect this output [UK:{'delivered':20,'due':22},US:{'delivered':10,'due':11}]
,so please help me what i'll do next 但我希望得到此输出
[UK:{'delivered':20,'due':22},US:{'delivered':10,'due':11}]
,所以请帮我下一步
You can first create array of objects and then reduce()
to return one object. 您可以先创建对象数组,然后用
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}
};
});
See: 看到:
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<arguments.length;i++) {
obj = arguments[i];
if (!sum[obj.team_name]) {
sum[obj.team_name]={'delivered':0,'due':0};
}
sum[obj.team_name].delivered += obj.delivered;
sum[obj.team_name].due += obj.due;
}
return sum;
}
var sum = sum_all(obj_1,obj_2,obj_nth);
console.log(sum);
Your console output will be: 您的控制台输出将是:
sum Object UK: Object delivered: 20 due: 22 US: Object delivered: 10 due: 11
Store these objects in an array , such as: 将这些对象存储在数组中 ,例如:
var myObjects = [
{'delivered':10,'due':11,'team_name':'UK'},
{'delivered':10,'due':11,'team_name':'US'},
{'delivered':10,'due':11,'team_name':'UK'}
];
Create a new object in which you will store your results: 创建一个新对象,您将在其中存储结果:
var results = {};
Then iterate through the array with a for loop ( as it is generally faster ) and add the other properties according to team_name
: 然后使用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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.