【问题标题】:Avoid same object in the existing angular model避免现有角度模型中的相同对象
【发布时间】:2016-08-04 06:23:15
【问题描述】:

试图合并两个数组中出现类似的两个数组 这就是我所做的

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

【问题讨论】:

    标签: arrays angularjs json jsonobject array-merge


    【解决方案1】:

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

    通过将自己的可枚举属性从 src 对象复制到 dst 来深度扩展目标对象 dst。您可以指定多个 src 对象。如果要保留原始对象,可以通过传递一个空对象作为目标来实现: 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

    【讨论】:

      【解决方案2】:

      合并的语法是

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

      它只显示第二个元素

      尝试使用

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

      【讨论】:

      • 如果你的意思是 src1 = json_srcsrc2 = json_dest 并且 dst 是一个新变量,这不起作用
      猜你喜欢
      • 1970-01-01
      • 2016-04-22
      • 2019-03-07
      • 2018-02-13
      • 1970-01-01
      • 2022-01-18
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多