使用AngularJS进行对象的深度合并

12 浏览
0 Comments

使用AngularJS进行对象的深度合并

通常,我会使用angular.extend()来浅复制对象。以下是一个例子:

var object1 = {
  "key": "abc123def456",
  "message": {
    "subject": "有一个问题",
    "from": "[email protected]",
    "to": "[email protected]"
   }
};
var object2 = {
  "key": "00700916391"
};
console.log(angular.extend({}, object1, object2));

这将得到:

{

"key": "00700916391",

"message": {

"subject": "有一个问题",

"from": "[email protected]",

"to": "[email protected]"

}

}

但是如果我想合并对象,以便父级键不被子对象覆盖呢:

var object1 = {
  "key": "abc123def456",
  "message": {
    "subject": "有一个问题",
    "from": "[email protected]",
    "to": "[email protected]"
   }
};
var object2 = {
  "key": "00700916391",              //覆盖我
  "message": {                       //不要覆盖我!
    "subject": "嘿,怎么了?",     //覆盖我
    "something": "something new"     //添加我
   }
};
console.log(merge(object1, object2));

这将得到:

{

"key": "00700916391",

"message": {

"subject": "嘿,怎么了?",

"from": "[email protected]",

"to": "[email protected]",

"something": "something new"

}

}

  • 是否有一个我不知道的已经可以进行深度合并的Angular函数?
  • 如果没有,是否有一种在JavaScript中递归地进行n层深度合并的本地方法?
0