使用AngularJS合并两个对象

时间:2017-10-18 18:01:03

标签: javascript angularjs json merge

我需要在angularJS中合并2个对象 我尝试使用angular.merge(obj1,obj2),但这不是我的预期

第一个对象

 // obj1
{
  "0": {
    "name": "340.jpg",
    "bytes": 21955,
    "link": "340.jpg?dl=0",
    "icon": "page_white_picture.png"
  },

  "1": {
    "name": "341.pdf",
    "bytes": 3394,
    "link": "340.pdf?dl=0",
    "icon": "page_white_acrobat.png"

  }

第二个对象

// obj2
{
  "id_pro": "70",
  "nuevo": "true",
  "fecha_ser": "2017-10-18"
}

预期结果

// Merged
{

  "0": {
    "name": "340.jpg",
    "bytes": 21955,
    "link": "340.jpg?dl=0",
    "icon": "icons64/page_white_picture.png",

    "id_pro": "70",
    "nuevo": "true",
    "fecha_ser": "2017-10-18"
  },

  "1": {
    "name": "341.pdf",
    "bytes": 3394,
    "link": "340.pdf?dl=0",
    "icon": "page_white_acrobat.png",

    "id_pro": "70",
    "nuevo": "true",
    "fecha_ser": "2017-10-18"

  }

}

在第一个对象的每个组中准确添加第二个对象。

是否可以使用angular.merge或者我需要自己的功能?感谢

3 个答案:

答案 0 :(得分:1)

您可以使用native javascript进行此操作。

其中一个解决方案包括forEach方法与Object.assign结合使用,以便合并属性。



let obj={
  "0": {
    "name": "340.jpg",
    "bytes": 21955,
    "link": "340.jpg?dl=0",
    "icon": "page_white_picture.png"
  },
  "1": {
    "name": "341.pdf",
    "bytes": 3394,
    "link": "340.pdf?dl=0",
    "icon": "page_white_acrobat.png"

  }
};
let second={
  "id_pro": "70",
  "nuevo": "true",
  "fecha_ser": "2017-10-18"
}
Object.keys(obj).forEach(function(key){
  Object.assign(obj[key],second);
});
console.log(obj);




答案 1 :(得分:1)

只需对第一个对象进行迭代

for(var i in obj1) {
    angular.merge(obj1[i], obj2);
}

答案 2 :(得分:0)

值得注意的是,有很多方法可以迭代对象。既然你正在使用AngularJS,你可以使用Angular helper方法:

angular.forEach(obj1, function(obj) {
    angular.merge(obj, obj2);
});