js 深度合并对象(Object.assign)

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));

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35606400/article/details/120390928