假设我有一个如下目标对象:
{
"info": {
"name": "Tito",
"email": "tito@foo.com",
"company": "FOOBAR INC."
}
}
我想用以下对象修补/更新上述对象的目标:
{
"info": {
"email": "tito@foobar.com",
"company": "Foobar Inc.",
"state": "CA"
}
}
因此以以下内容结束:
{
"info": {
"name": "Tito",
"email": "tito@foobar.com",
"company": "Foobar Inc.",
"state": "CA"
}
}
如果找到则更新最简单的方法是什么,如果找不到则添加(考虑到属性可能是嵌套的)。是否有捷径可寻?
到目前为止,我已经尝试了以下方法,但仅适用于一级属性:
module.exports.mergeObjects = function (obj1, obj2) {
var obj3 = {};
for (var attrname1 in obj1) {
if (obj1.hasOwnProperty(attrname1)) {
obj3[attrname1] = obj1[attrname1];
}
}
for (var attrname2 in obj2) {
if (obj2.hasOwnProperty(attrname2)) {
obj3[attrname2] = obj2[attrname2];
}
}
return obj3;
};
我需要做一个深度遍历。在 Obj-C 中我会很快做到这一点,但是对于 JS 来说是新手,我不确定我是否试图做太多事情。
谢谢!