function deepAssign(...param) {
let result = Object.assign({
}, ...param);
for (let item of param) {
for (let [idx, val] of Object.entries(item)) {
if (typeof val === 'object') {
result[idx] = deepAssign(result[idx], val);
}
}
}
return result;
}
案例
var x = {
a: {
a1: {
a1_1: 1.1,
a1_2: 1.2
}
,a2: {
a2_1: 2.1,
a2_2: 2.2
}
},
b: 1
}
, y = {
a: {
a1: {
a1_3: 1.3
}
},
b: {
b1: {
b1_1: 1
},
b2: 555
},
c: 'ccc'
}
, z = {
b: {
b1: {
xx: 1,
yy: 2,
ccc: {
abb: '12242',
bbb: [1,2,3]
}
}
},
a: {
a55: {
xx: 33
}
}
}
console.log(deepAssign(x, y, z));