美文网首页
数组浅拷贝和深拷贝

数组浅拷贝和深拷贝

作者: 爱笑的书生 | 来源:发表于2019-04-22 17:46 被阅读0次

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

let oldCopy = [1,2,3];
let numbersCopy = [...oldCopy];

2.深拷贝 适用于对象和数组

let a = [[1],[2]]
let b = JSON.parse(JSON.stringify(a))

对象的深拷贝
1.时间将只是字符串的形式。而不是时间对象
2.如果obj里有函数,undefined,则序列化的结果会把函数或 undefined丢失
3.如果obj里有RegExp、Error对象,则序列化的结果将只得到空对象
4.会丢弃对象的constructor
js实现

function deepClone(obj){
    let objClone = Array.isArray(obj)?[]:{};
    if(obj && typeof obj==="object"){
        for(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中对象的复制

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

  • 浅拷贝和深拷贝

    数组的深拷贝和浅拷贝 浅拷贝:var arr = ["One","Two","Three"]; var arrto...

  • 浅拷贝与深拷贝

    /*浅拷贝:拷贝地址*/ /*深拷贝:拷贝对象*/ 用Strong修饰不可变数组:浅拷贝 用Copy修饰不可变数组...

  • iOS深拷贝(MutableCopy)与浅拷贝(Copy)的区别

    深拷贝和浅拷贝的概念 iOS中有深拷贝和浅拷贝的概念,那么何为深拷贝何为浅拷贝呢?浅拷贝:浅拷贝并不拷贝对象本身,...

  • 放进收藏夹,省下时间睡觉!

    1. 数组去重 2. 深浅拷贝 浅拷贝 深拷贝 假深拷贝 真深拷贝 3. 事件委托 5. 使用push和apply...

  • Object 对象

    什么是浅拷贝,如何实现浅拷贝?什么是深拷贝,如何实现深拷贝? 是什么: 浅拷贝: 将原对象或原数组的引用直接赋给新...

  • js深拷贝和浅拷贝区别

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

  • iOS面试题-第二页

    11.深拷贝和浅拷贝的理解. 深拷贝;拷贝的内容. 浅拷贝:拷贝的指针. 深拷贝如: NSMutableDicti...

  • 数组浅拷贝和深拷贝

    乞丐版深拷贝 JSON.parse(JSON.stringify()) 缺点:无法处理循环引用问题 我发现使用ma...

网友评论

      本文标题:数组浅拷贝和深拷贝

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