ES6 對象數組的深拷貝

對於數組的深拷貝,習慣性的使用 […arr] 建立新地址,偶然間對某份對象數組數據進行同樣的深拷貝時,發現修改新數組內部對象的元素依舊會影響到原數組對象

例如

let a = [
	{ name: "小李" }
];
let b = [...a];
b[0].name = "小張";
console.log(a[0].name);
// 輸出結果爲"小張"

所以對於對象數組的整體深拷貝,其內部對象則依舊爲淺拷貝

接下來你就應該知道該怎麼做了:

let b = [...a.map(aInfo => {
	return Object.assign({}, aInfo)
})]
b[0].name = "小張";
console.log(a[0].name);
// 輸出結果爲"小李"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章