按对象中的键合并两个列表

时间:2017-06-08 16:36:35

标签: javascript jquery underscore.js

我见过_.zip根据索引合并两个列表,但我希望按键合并。这两个列表不一定是排序/索引的,但具有相同数量的对象

例如

{{1}}
合并看起来像是:

{{1}}

1 个答案:

答案 0 :(得分:0)

您可以像这样比较和合并。虽然它不是通用的,但它可以适用于您的情况

list1 = [{id:"1", field1:"field1val"},{id:"2", field1:"abc"}]
list2 = [{id:"1", field2:"field2val"}]

for(var i=0; i<list2.length; i++){
  for(var j=0; j<list1.length; j++){
    if(list1[j].id === list2[i].id){
      list1[j].field2 = list2[i].field2
    }
  }
}

console.log(list1)

更好的解决方案就是这样,即使有更多属性

,它也会完全组合对象(Union)

list1 = [{id:"1", field1:"field1val"},{id:"2", field1:"abc"}]
list2 = [{id:"1", field2:"field2val"}]

for(var i=0; i<list2.length; i++){
  for(var j=0; j<list1.length; j++){
    if(list1[j].id === list2[i].id){
      Object.assign(list1[j],list2[i])    // to union two objects
    }
  }
}

console.log(list1)