题解 | #深拷贝#

深拷贝

https://www.nowcoder.com/practice/70ca77b52d424ced8ebb348cd77c1dc5

const _completeDeepClone = (obj, visited = new WeakMap()) => {
    // 补全代码
    // 处理基本类型
    if (obj === null || typeof obj !== 'object') {
        return obj;
    }

    // 处理循环引用
    if (visited.has(obj)) {
        return visited.get(obj);
    }

    // 处理日期类型
    if (obj instanceof Date) {
        return new Date(obj);
    }

    // 处理正则表达式类型
    if (obj instanceof RegExp) {
        return new RegExp(obj);
    }

    // 处理函数类型
    if (typeof obj === 'function') {
        return obj;
    }

    // 处理数组类型
    if (Array.isArray(obj)) {
        const copyArray = [];
        visited.set(obj, copyArray);
        for (let i = 0; i < obj.length; i++) {
            copyArray[i] = _completeDeepClone(obj[i], visited);
        }
        return copyArray;
    }

    // 处理普通对象类型
    const copyObj = {};
    visited.set(obj, copyObj);
    for (const key in obj) {
        if (obj.hasOwnProperty(key)) {
            copyObj[key] = _completeDeepClone(obj[key], visited);
        }
    }

    return copyObj;
}

全部评论

相关推荐

最近拿到了正浩的提前批offer感觉自己的实力得到了肯定,也给了我更多底气
搞机墨镜猫:正浩提前批官网好像就只有电力电子软硬件,哥们投的是这两个岗位吗
26届校招投递进展
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
程序员饺子:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务