一文搞定数组深拷贝、浅拷贝方法

2021-04-06  本文已影响0人  虎牙工务员刘波

前言:最近在和同事们讨论数组深拷贝、浅拷贝的问题,整理了一下,非常简单,以免大家今后混晰。

区别:
深拷贝:复制整个对象的值来存储(开辟新的内存来存储新东西)
浅拷贝:只拷贝存储对象的指针指向(会共用同一块内存,对象变化会相互影响)

浅拷贝的方法(多层时候为才为深拷贝):

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]
const data = [1,2,3]
const copy = Object.assign(data)
copy[0] = 1111
copy     // [1111, 2, 3]
data     // [1111, 2, 3]

多层数组拷贝(深拷贝):

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]]

以上均为个人理解整理,如有错误留言指出~~~(❤ ω ❤)

上一篇 下一篇

猜你喜欢

热点阅读