使用AngularJS进行对象的深度合并
使用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层深度合并的本地方法?