美文网首页
js递归实现深拷贝

js递归实现深拷贝

作者: TurnHug | 来源:发表于2023-10-08 13:48 被阅读0次
    //使用递归的方式实现数组、对象的深拷贝
    export function deepClone(obj) {
        //判断传入的值是否为一个对象
        if (obj === null || typeof obj !== 'object') {
            return obj;
        }
        if (
            Object.prototype.toString.call(obj) ===
            '[object Date]'
        ) {
            return new Date(obj);
        }
        if (
            Object.prototype.toString.call(obj) ===
            '[object RegExp]'
        ) {
            return new RegExp(obj);
        }
        if (
            Object.prototype.toString.call(obj) ===
            '[object Undefined]'
        ) {
            return new Error(obj);
        }
        let objClone = Array.isArray(obj) ? [] : {};
        if (obj && typeof obj === 'object') {
            for (var key in obj) {
                if (obj.hasOwnProperty(key)) {
                    //判断ojb子元素是否为对象,如果是,递归复制
                    if (
                        obj[key] &&
                        typeof obj[key] === 'object'
                    ) {
                        objClone[key] = deepClone(
                            obj[key],
                        );
                    } else {
                        //如果不是,简单复制
                        objClone[key] = obj[key];
                    }
                }
            }
        }
        return objClone;
    }
    

    相关文章

      网友评论

          本文标题:js递归实现深拷贝

          本文链接:https://www.haomeiwen.com/subject/rurbbdtx.html