物件與陣列的深拷貝

2021-08-25 16:53:44 字數 641 閱讀 5203

什麼是深拷貝和淺拷貝

1)深拷貝在計算機中開闢了一塊記憶體位址用於存放拷貝的物件,

2)而淺拷貝僅僅是指向被拷貝的記憶體位址,如果原位址中物件被改變了,那麼淺拷貝出來的物件也會相應改變。

深拷貝和淺拷貝最根本的區別在於是否是真正獲取了乙個物件的拷貝實體,而不是引用。

物件和陣列占用記憶體較大,直接複製會發生引用。這個時候就需要深拷貝,來實現拷貝。防止發生引用

陣列對於es6 陣列有兩種新的拷貝方法  防止發生引用

1. array.from();

var arr1=[1,2,3];

var arr2=array.from(arr1);

2.

var arr1=[1,2,3];

var arr2=[...arr1];

物件

此處只記錄一種最簡單的深拷貝方法。

var obj = ;  //需要深拷貝的物件。

var str = json.stringify(obj) ;//把此物件轉化為字串。

var newobj = json.parse(str);//再把字串形式的物件轉回物件得到的新物件即可滿足深拷貝;不會產生引用。

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

淺拷貝 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...

物件陣列的深拷貝和物件的深拷貝

1 對於 普通陣列 陣列元素為數字或者字串 深拷貝很簡單,拷貝之後兩個陣列指標指向的儲存位址不同,從而完成深拷貝 var test 1,2,3 原陣列 var testcopy concat test 拷貝陣列 testcopy 0 4 console.log test 1,2,3 console....

陣列深拷貝 物件的深拷貝 陣列去重

1 for 迴圈實現陣列的深拷貝 var arr 1,2,3,4,5,6 var arr2 copyarr arr function copyarr arr var obj2 copyobj obj function copyobj obj for var key in obj return res...