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



尝试合并两个数组中出现相似情况的两个数组这是我做的

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不用于合并数组,而是使用源对象的可枚举属性深度扩展目标对象:

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

如果您只想将两个数组合并为一个数组,则不需要一个有角度的API。简单使用concat:

json_dest = json_dest.concat(json_src);

如果您想通过某个属性(例如您的案例中的legID)删除重复项,则可以在组合数组后执行此操作。关于如何做到这一点,有很多资源。例如,请参阅以下问题:从javascript 中的对象数组中删除重复项

合并的语法是

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

它只显示了第二个元素

尝试使用

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