我需要合并对象。它们都有相同的键,但数值不同。我需要获取每个键的值之和

时间:2018-08-03 00:03:46

标签: javascript object

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"
}

如果您能指出正确的方向,我将不胜感激!

2 个答案:

答案 0 :(得分:0)

假设您的投票是在一个数组中,则可以reduce将其放入单个对象:

exact

答案 1 :(得分:0)

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)