{c:{b:{d:1}}}和{c:{b:{f:2}}}这样的两个对象怎么合并,用普通的{...{c:{b:{d:1}}}, ...{c:{b:{f:2}}}}这种方法只能得到{c:{b:{f:2}}}而不是{c:{b:{d:1, f:2}}}(本人是个前端小白,最好用js回答一哈)
var d1 = {c:{b:{d:1}}};
var d2 = {c:{b:{f:2}}};
function fp(a,b) {
for (var n in b) {
if (n in a) {
fp(a[n],b[n]);
} else {
a[n] = b[n];
}
}
}
fp(d1,d2);
console.log(d1);
简单的实现一个merge,详细的可以去网上找
function isObject (obj) {
return Object.prototype.toString.call(obj) === '[object Object]'
}
function merge (target, ...arg) {
arg.forEach(obj => {
Object.keys(obj).forEach(key => {
const srcVal = obj[key]
if (isObject(srcVal) && isObject(target[key])) {
target[key] = merge(target[key], srcVal)
} else {
target[key] = srcVal
}
})
})
return target
}
方法:
mergeRecursive(obj1, obj2) { for (var p in obj2) { try { if (obj2[p].constructor == Object) { obj1[p] = mergeRecursive(obj1[p], obj2[p]); } else { obj1[p] = obj2[p]; } } catch (e) { obj1[p] = obj2[p]; } } return obj1; },
Object.assign(obj1,obj2)和console.log({...{c:{b:{d:1}}},...{c:{b:{f:2}}}})了解一下...展开运算符
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,欢迎您加入CSDN!
目前问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632