[英]I need to merge objects. They all have the same keys but differing numerical values. I need to get the sum of values for each key
JS和一般编程新手。 我已经在SO和其他资源上尝试了许多解决方案,但似乎无法弄清楚。 我有二十个或更多代表用户“投票”的对象。 根据用户的输入,它们都有相同的键和不同的值。 我需要通过合计不同的值来“汇总选票”并返回一个对象。
例:
{
"Seattle" : "1",
"Chicago" : "2",
"New York" : "3"
}
{
"Chicago" : "1",
"New York" : "2",
"Seattle" : "3"
}
{
"New York" : "1",
"Chicago" : "2",
"Seattle" : "3"
}
我希望将以上三个对象简化为:
{
"New York" : "6",
"Seattle" : "7",
"Chicago" : "5"
}
如果您能指出正确的方向,我将不胜感激!
const votes = [ { "Seattle" : "1", "Chicago" : "2", "New York" : "3" }, { "Chicago" : "1", "New York" : "2", "Seattle" : "3" }, { "New York" : "1", "Chicago" : "2", "Seattle" : "3" } ]; const tally = votes.reduce((a, e) => { for (const p in e) { a[p] = a[p] + (+e[p]) || +e[p]; } return a; }, {}) console.log(tally);
另一个带有reduce/keys/map
选项看起来更functional
:
const objs = [{ "Seattle": "1", "Chicago": "2", "New York": "3" }, { "Chicago": "1", "New York": "2", "Seattle": "3" }, { "New York": "1", "Chicago": "2", "Seattle": "3" } ] var result = objs.reduce((r, c) => Object.keys(r).map((x) => r[x] = +r[x] + (+c[x])) && r) console.log(result)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.