有没有办法转身
[ { JavaScript: 41837, Batchfile: 47 },
{ 'C#': 7484 },
{ Batchfile: 110 },
{ Scala: 50597 },
{ Java: 18180 },
{ Java: 55689 } ]
进入:
{
JavaScript: 41837,
Batchfile: 157,
'C#': 7484
Scala: 50597,
Java: 73869
}
每次运行应用程序时,数组的大小都不同。
答案 0 :(得分:3)
reduce是你的朋友
const list = [ { JavaScript: 41837, Batchfile: 47 },
{ 'C#': 7484 },
{ Batchfile: 110 },
{ Scala: 50597 },
{ Java: 18180 },
{ Java: 55689 } ];
const summed = list.reduce((totals, obj) => {
Object.keys(obj).forEach(k => {
const cur = totals[k] || 0;
totals[k] = cur + obj[k];
});
return totals;
}, {});
console.log(summed);
答案 1 :(得分:0)
制作一个新对象。遍历输入数组中的每个对象。对于每个对象,遍历该对象的键。如果它们的键存在于您的新对象中,请添加值,否则将键和值添加至新对象;
var arr = [ { JavaScript: 41837, Batchfile: 47 },
{ 'C#': 7484 },
{ Batchfile: 110 },
{ Scala: 50597 },
{ Java: 18180 },
{ Java: 55689 } ]
var result = {}
arr.forEach(function(group){
Object.keys(group).forEach(function(key){
if(result[key]) {
result[key] += group[key];
} else {
result[key] = group[key];
}
})
});
console.log(result);
答案 2 :(得分:0)
Array reduce与For in结合使用可以遍历对象中的对象键。
a = [ { JavaScript: 41837, Batchfile: 47 },
{ 'C#': 7484 },
{ Batchfile: 110 },
{ Scala: 50597 },
{ Java: 18180 },
{ Java: 55689 } ]
result = {}
b = a.reduce((result, item) => {
for (let eachKey in item) {
const curSum = result[eachKey] || 0;;
result[eachKey] = curSum + item[eachKey];
}
return result;
}, result)