避免现有 angular 模型中的相同对象

Avoid same object in the existing angular model

正在尝试合并两个数组,两个数组中出现了一些相似事件 这就是我所做的

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”
我需要知道如何它可以有效地完成?
还有 为什么 会这样?

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

Deeply extends the destination object dst by copying own enumerable properties from the src object(s) to dst. You can specify multiple src objects. If you want to preserve original objects, you can do so by passing an empty object as the target: var object = angular.merge({}, object1, object2) Source

如果您只想将两个数组合并为一个数组,则不需要 angular API 即可。只需使用 concat:

json_dest = json_dest.concat(json_src);

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

合并的语法是

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

它只显示第二个元素

尝试使用

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