js中實現陣列與物件的深拷貝

2021-08-14 18:10:22 字數 895 閱讀 5567

對於一維陣列,for迴圈實現深拷貝

var arr = [1,2,3,4,5]

var arr2 = copyarr(arr)

function

copyarr

(arr)

return res

}

也可以用slice()實現深拷貝,他是將原陣列中抽離部分出來形成乙個新陣列。我們只要設定為抽離全部,即可完成陣列的深拷貝。**如下:

var arr = [1,2,3,4,5]

var arr2 = arr.slice(0)

arr[2] = 5

console.log(arr)

console.log(arr2)

也可以用concat()實現陣列的深拷貝

這個**也非常簡單,原理更加粗暴。它是用於連線多個陣列組成乙個新的陣列的方法。那麼,我們只要連線它自己,即可完成陣列的深拷貝。**如下:

var arr = [1,2,3,4,5]

var arr2 = arr.concat()

arr[2] = 5

console.log(arr)

console.log(arr2)

var arr = [1,2,3,4,5]

var [ ...arr2 ] = arr

arr[2] = 5

console.log(arr)

console.log(arr2)

先轉化成json格式,再轉化成物件

var obj = 

var obj2 = json.parse(json.stringify(obj))

JS陣列和物件實現深拷貝

for 迴圈 for 迴圈 copy function copyfun arr return copyarr let arr1 1 2,3 4 let arr2 copyfun arr1 1,2,3,4 console.log arr2 1,2,3,4 arr2 0 10 console.log a...

js陣列,物件深拷貝

無事,封裝了乙個js深拷貝的方法 基本思路 deepcopy data data 可能是陣列也可能是物件 1.判斷data是陣列 物件或者其他資料型別 2.宣告空陣列 或者 空物件 res 3.分別處理 如果陣列元素或物件屬性值不是陣列或物件,空陣列或物件之間接收元素 res.push data i...

js 陣列物件深拷貝

如何區分深拷貝與淺拷貝,簡單點來說,就是假設b複製了a,當修改a時,看b是否會發生變化,如果b也跟著變了,說明這是淺拷貝,拿人手短,如果b沒變,那就是深拷貝,自食其力 我們希望在改變新的陣列 物件 的時候,不改變原陣列 物件 我們在使用深拷貝的時候,一定要弄清楚我們對深拷貝的要求程度 是僅 深 拷貝...