無事,封裝了乙個js深拷貝的方法
基本思路:
deepcopy(data)
data 可能是陣列也可能是物件
1.判斷data是陣列 物件或者其他資料型別
2.宣告空陣列 或者 空物件 res
3.分別處理
如果陣列元素或物件屬性值不是陣列或物件,空陣列或物件之間接收元素
res.push(data[i])
res[x] = data[x]
如果陣列元素或物件屬性值是陣列或物件,則可以再一次呼叫deepcopy
res.push(deepcopy(data[i]))
res[x] = deepcopy(data[x])
4.返回深拷貝資料 res
具體程式:
var arr =[1
,2,3
,,undefined]
;// var arr = ],hobby:'games'}
console.
log(
deepcopy
(arr)
)function
deepcopy
(data)
else}}
else
if(data.constructor === object)
for(x in data)
else}}
else
return res;
}
js 陣列物件深拷貝
如何區分深拷貝與淺拷貝,簡單點來說,就是假設b複製了a,當修改a時,看b是否會發生變化,如果b也跟著變了,說明這是淺拷貝,拿人手短,如果b沒變,那就是深拷貝,自食其力 我們希望在改變新的陣列 物件 的時候,不改變原陣列 物件 我們在使用深拷貝的時候,一定要弄清楚我們對深拷貝的要求程度 是僅 深 拷貝...
js 陣列物件深拷貝
結論 物件的拷貝不能採用直接賦值的方式。踩過的坑如下 formdata本來是父元件傳過來的,但是我不想直接用,於是我直接賦值給乙個formdatacopy的物件。但是詭異的事情發生了,就是在我填寫自己的表單元件的時候,一旦表單的資料發生的變化時,本來是formdatacopy的值發生變化,但是 fo...
js 陣列物件深拷貝
結論 物件的拷貝不能採用直接賦值的方式。踩過的坑如下 formdata本來是父元件傳過來的,但是我不想直接用,於是我直接賦值給乙個formdatacopy的物件。但是詭異的事情發生了,就是在我填寫自己的表單元件的時候,一旦表單的資料發生的變化時,本來是formdatacopy的值發生變化,但是 fo...