数组的 浅拷贝 & 深拷贝

Posted wen233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组的 浅拷贝 & 深拷贝相关的知识,希望对你有一定的参考价值。

继续不多bb,直接上代码:

含值类型的元素的假拷贝:

let obj = [1, 2]

let copyFake = obj
// let copyFake = [...obj]

copyFake[1] = 20
console.log(obj[1]) // 20
console.log(copyFake[1]) // 20

含值类型的元素的浅拷贝:

let obj = [1, 2]

let copyShallow = obj.slice()
// let copyShallow = [...obj]

copyShallow[1] = 20
console.log(obj[1]) // 2
console.log(copyShallow[1]) // 20

含引用类型元素的浅拷贝:

let obj = [
    
        name: ‘小白1‘,
        job: ‘搬砖‘
    ,
    
        name: ‘小白2‘,
        job: ‘拌水泥‘
    
]

let copyShallow = obj.slice()
// let copyShallow = [...obj]

copyShallow[1].name = ‘大白‘
console.log(obj[1].name) // 大白
console.log(copyShallow[1].name) // 大白

含引用类型元素的深拷贝:

let obj = [
    
        name: ‘小白1‘,
        job: ‘搬砖‘
    ,
    
        name: ‘小白2‘,
        job: ‘拌水泥‘
    
]

let copyDeep = JSON.parse(JSON.stringify(obj))

copyDeep[1].name = ‘大白‘
console.log(obj[1].name) // 小白2
console.log(copyDeep[1].name) // 大白

 

以上是关于数组的 浅拷贝 & 深拷贝的主要内容,如果未能解决你的问题,请参考以下文章

Python3 & 浅拷贝与深拷贝

2.深拷贝与浅拷贝的区别

jquery怎样深拷贝一个数组

C++ 浅拷贝 & 深拷贝

JS-[浅拷贝和深拷贝]

深拷贝和浅拷贝的区别 & 如何实现深拷贝和浅拷贝