寒潮ing,你可能在FaceTest中遇到(5)—— 实现一个深拷贝

284 阅读1分钟

深拷贝和浅拷贝区别就不在这赘述了,直接上面试够用版深拷贝代码(可以手写)

function deepCopy(obj) {
    // 开始建立一个与当前需要克隆的空对象或数组
    let objCopy = Array.isArray(obj) ? [] : {};
    // 判断类型如果是对象(或数组)
    // 注意 typeof null 结果是object 所以要排除
    if (typeof obj === "object" && obj != null) { 
        for(let key in obj){
            // 判断里面的值是否为object或者array
            let status = typeof obj[key] === "object" && obj[key] != null;
            objCopy[key] = status ? deepCopy(obj[key]) : obj[key]
        }
    }else {
        objCopy = obj
    }
    return objCopy
}