Javascript:按键合并对象

时间:2015-11-16 08:43:06

标签: javascript object

我有一个对象数组,如下所示:

var countries = [
    {id: SWE, value: 5},
    {id: DE, value:10},
    {id: SWE, anotherValue: 11},
    {id: DE, anotherValue: 15}
]

我想通过id合并数组元素。结果应如下所示:

countries = [
    {id: SWE, value: 5, anotherValue: 11},
    {id: DE, value:10, anotherValue:15}
]

现在,我正在使用 for循环和许多if和else 来执行此操作。

问题:是否有任何(更优雅的)javascript内置功能来实现这一目标?

我试过谷歌搜索,问题是我不确定谷歌的用途(我是一个新手的javascript)。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

试试这个:

function mergeById(a){
  var obj={};
  
  a.forEach(function(e){
    if(e && e.id){
      obj[e.id] = obj[e.id] || {};    
      for(var _k in e) obj[e.id][_k] = e[_k]
    }
  });       
  
  return Object.keys(obj).map(function (key) {return obj[key]});
}

var countries = [
    {id: 'SWE', value: 5},
    {id: 'DE', value:10},
    {id: 'SWE', anotherValue: 11},
    {id: 'DE', anotherValue: 15}
]
document.write(JSON.stringify(mergeById(countries)))