前言:最近在和同事们讨论数组深拷贝、浅拷贝的问题,整理了一下,非常简单,以免大家今后混晰。
区别:
深拷贝:复制整个对象的值来存储(开辟新的内存来存储新东西)
浅拷贝:只拷贝存储对象的指针指向(会共用同一块内存,对象变化会相互影响)
浅拷贝的方法(多层时候为才为深拷贝):
- ES6的 ... 扩展符
const data3 = [1,2,3,4,5]
const copy3 = [...data3] //一层拷贝
copy3[0] = 111
console.log(copy3) // [111, 2, 3, 4, 5]
console.log(data3) // [1, 2, 3, 4, 5]
- ES6的 Object.assign
const data = [1,2,3]
const copy = Object.assign(data)
copy[0] = 1111
copy // [1111, 2, 3]
data // [1111, 2, 3]
多层数组拷贝(深拷贝):
- JSON.stringify、JSON.parse
const data4 = [[1,2,3],[4,5,6]]
const copy4 = JSON.parse(JSON.stringify(data4)) //多层数组拷贝
copy4[0][0] = 111
console.log(copy4) // [[111,2,3],[4,5,6]]
console.log(data4) // [[1,2,3],[4,5,6]]
以上均为个人理解整理,如有错误留言指出~~~(❤ ω ❤)
网友评论