避免在现有角度模型中使用相同的对象

时间:2016-08-04 06:23:15

标签: arrays angularjs json jsonobject array-merge

尝试将两个数组合并为两个数组中的一些相同的出现 这就是我做的事情

var json_dest = [
    {
        "legID":"12121",
    "message":212112
    },
  {
    "legID":"12122",
    "message":212112
  }
];
var json_src = [
        {
        "legID":"12121",
    "message":212100
    },
  {
    "legID":"12123",
    "message":212112
  }
];

console.log(angular.merge(json_dest, json_src));

输出是:

[
   {
     "legID":"12121",
     "message":212100
   },
   {
     "legID":"12123",
     "message":212112
   }
]

它合并了重复项 但我错过了另一个legID“12123”
我需要知道如何才能有效地完成工作? 还有为什么会发生什么?

2 个答案:

答案 0 :(得分:2)

angular.merge不用于合并数组,而是使用源对象的可枚举属性深度扩展目标对象:

  

通过将自己的可枚举属性从src对象复制到dst,深度扩展目标对象dst。您可以指定多个src对象。如果要保留原始对象,可以通过将空对象作为目标传递来实现:   var object = angular.merge({}, object1, object2) Source

如果您只想将两个数组合并为一个,则不需要使用角度API来执行此操作。只需使用concat:

json_dest = json_dest.concat(json_src);

如果要删除某个属性的重复项,例如您的案例中的legID,则可以在组合数组后执行此操作。如何做到这一点有很多资源。例如,请参阅此问题:Remove duplicates from an array of objects in javascript

答案 1 :(得分:0)

merge的语法是

var object = angular.merge({}, obj1, obj2); 

它只显示第二个元素

尝试使用

console.log(angular.merge(dst, src1, src2));