陣列,物件的深拷貝 與 淺拷貝

2022-08-27 21:54:10 字數 1157 閱讀 9777

淺拷貝:object.assign()
let arr1 = [1,23,54]

let arr2 =object.assign(arr1)

console.log(arr1 === arr2) //

result : true

let obj1 =

let obj2 =object.assign(obj1)

console.log(obj1 === obj2) //

result : true

深拷貝 json.parse( json.stringify( ) )

let arr1 = [1,54,62,7]

let arr2 =json.parse(json.stringify(arr1))

console.log(arr1 === arr2 ) //

result :false

let obj1 =

let obj2 =json.parse(json.stringify(obj1))

console.log(obj1 === obj2) //

result : false

深拷貝 擴充套件運算子 (...)

在使用擴充套件運算子 來進行深拷貝,需要注意的是  擴充套件運算子 只深拷貝 一維陣列 和 物件  (意思就是裡面不能套其他的陣列或物件)

let arr1 = [1,53,58,4]

let arr2 =[...arr1]

console.log(arr1 === arr2) //

result : false

let obj1 =

let obj2 =

console.log(obj1 === obj2) //

result : false

下面 舉例 不可深拷貝 的情況

let arr1 = [1,53,5,[2,3]]

let arr2 =[...arr1]

console.log(arr1 === arr2) //

result : false

//但是這裡 有乙個情況存在

console.log(arr1[3] === arr2[3]) //

result : true

js 物件深拷貝 深拷貝與淺拷貝

前言 最近在複習一些面試的知識點,剛剛好複習到了這一部分,於是就寫下這篇文章記錄一下。一 值型別和引用型別 在學習深拷貝和淺拷貝之前,我們先來了解一下js的變數型別。值型別 vs 引用型別 值型別 值型別主要有 number,string,boolean,symbol,null,undefined ...

物件的淺拷貝與深拷貝

工作中可能會遇到這樣乙個問題,我明明把資料拷貝了乙份,但改變拷貝後的資料居然同時會改變原始資料中的值。那就來看看為什麼吧,希望這篇文章可以給你解惑。只拷貝了資料物件的第一層,深層次的資料值與原始資料會互相影響 拷貝後的資料與原始資料還存有關聯 常見淺拷貝的方式 object.assign 擴充套件運...

JS 物件陣列淺拷貝,深拷貝

物件陣列的深拷貝與淺拷貝,簡單點來說,就是b複製了a,當a被修改時,未操作b,但b也跟著變了,就是淺拷貝,反之是深拷貝 深拷貝本身只針對較為複雜的object型別資料 淺拷貝 var a var b a a 1 age 18 console.log a,b 執行結果,a,b的age都發生了改變 偽深...