美文网首页
对象和数组的深拷贝

对象和数组的深拷贝

作者: Huang_jing | 来源:发表于2019-08-06 20:57 被阅读0次

var obj = {a: 11, b: {c: 22, d: 33, e: {f: 44, g: {h: 55}}}}

var arr = [11, [22, 33, [44, [55]]]]

function copyObj(obj) {

    var newObj = obj.constructor === Array ? [] : {};

    for (var key in obj) {

        if(obj.hasOwnProperty(key)) {

            // 这里使用递归,属性类型为对象则进一步遍历

            if (obj[key] && typeof obj[key] === 'object') {

                newObj[key] = obj[key].constructor === Array ? [] : {};

                newObj[key] = copyObj(obj[key])

            } else {

                newObj[key] = obj[key]

            }

        }

    }

    return newObj

}

附运行效果图

相关文章

  • js深拷贝和浅拷贝区别

    浅拷贝和深拷贝的区别 1.浅拷贝:将源对象或者原数组的引用 ```直接赋给``` 新对象/新数组 ,新对象/新...

  • JS中对象的复制

    JS中的对象复制分为两种情况:深拷贝和浅拷贝。深拷贝和浅拷贝的区别在于对数组和对象的拷贝,对它们拷贝时浅拷贝只是拷...

  • Javascript深拷贝

    什么是深拷贝 创建一个新的对象或数组时,将原对象/数组的“值”拷贝,而不是“引用”。 深拷贝 数组拷贝不存在多层嵌...

  • 深拷贝和浅拷贝

    1. 深拷贝和浅拷贝 1.浅拷贝: 将原对象或原数组的引用直接赋给新对象,新数组,新对象/数组只是原对象的一个引用...

  • 2018-05-22

    数组与对象的深拷贝

  • 深度遍历数组对象

    数组和对象都是引用类型,因此有深、浅拷贝之分,数组深拷贝可参考https://blog.csdn.net/fung...

  • C++封装(二)

    第2章 对象成员与对象数组 第3章 深拷贝与浅拷贝 浅拷贝: 深拷贝: 第4章 对象指针 对象指针: 栈中: 对象...

  • javascript 数组以及对象的深拷贝

    数组的深拷贝在js中,数组和对象的复制如果使用=号来进行复制,那只是浅拷贝。如下图演示: for 循环实现数组的深...

  • 数组浅拷贝和深拷贝

    1.浅拷贝 适用于维度是一维数组,多维数组由于(数组和对象是引用类型的)(常用方法) 2.深拷贝 适用于对象和...

  • OC 数组mutableCopy能不能把数组里边的对象深拷贝?

    一. 数组深拷贝,数组中对象不实现NSCopying协议 Person类 使用 结果: 从结果来看虽然数组是深拷贝...

网友评论

      本文标题:对象和数组的深拷贝

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