我正在尝试总结一个没有不同Keyname的json文件的值。
数据如下所示
"Bremen": {
"Total": 212884,
"BioNTech": 128435,
"Moderna": 17210,
"AstraZeneca": 67239
},
"Hamburg": {
"Total": 530203,
"BioNTech": 336368,
"Moderna": 73308,
"AstraZeneca": 120527
},
"Hessen": {
"Total": 1853184,
"BioNTech": 1166322,
"Moderna": 218812,
"AstraZeneca": 468050
},
...
现在我想聚合所有的BioNTec值,现代值,等等。
我想过像这样使用d3.js卷展栏
var sumByName = d3.nest()
.key(function(d) { return d.name; })
.entries(data);
但我不明白如何指定使用任何给定的键名,而不是硬编码该名称(在我的示例中为d.name),因为我的数据集没有该名称。使用Object.keys(d)也不起作用。
如果有人能为我指明正确的方向,我将不胜感激!
发布于 2021-06-03 16:04:56
可以使用reduce
完成
const aggregated = Object.values(data)
.reduce((sum, item) => {
Object.keys(item).forEach(key => sum[key] = item[key] + (sum[key] || 0));
return sum;
}, {});
const data = {
"Bremen": {
"Gesamt": 212884,
"BioNTech": 128435,
"Moderna": 17210,
"AstraZeneca": 67239
},
"Hamburg": {
"Gesamt": 530203,
"BioNTech": 336368,
"Moderna": 73308,
"AstraZeneca": 120527
},
"Hessen": {
"Gesamt": 1853184,
"BioNTech": 1166322,
"Moderna": 218812,
"AstraZeneca": 468050
}
};
const aggregated = Object.values(data).reduce((sum, item) => {
Object.keys(item).forEach(key => sum[key] = item[key] + (sum[key] || 0));
return sum;
}, {});
console.log(aggregated);
https://stackoverflow.com/questions/67824718
复制