如何使用新的擴展運算符克隆一個具有數組的對象?使用擴散運算符的數組克隆對象
實施例對象:
vehicles: {
cars: [1, 2],
boats: [3, 4]
}
我想與在它的陣列中的新對象。在那個新的對象中,我希望能夠改變或添加到一個沒有參考和影響車輛對象的陣列。
如何使用新的擴展運算符克隆一個具有數組的對象?使用擴散運算符的數組克隆對象
實施例對象:
vehicles: {
cars: [1, 2],
boats: [3, 4]
}
我想與在它的陣列中的新對象。在那個新的對象中,我希望能夠改變或添加到一個沒有參考和影響車輛對象的陣列。
Object.assign和spread運算符創建淺層克隆,只有它們被引用的深度只有一層。我發現的最好的方法(感謝MDN)是使用JSON函數來創建一個真正的克隆。
let vehicles = {
cars: [1, 2],
boats: [3, 4],
};
let test = JSON.parse(JSON.stringify(vehicles));
console.log(vehicles, test);
test.cars[0] = 5;
vehicles.cars[0] = 7;
console.log(vehicles, test);
偉大的解決方案! – Euroclydon37
如果你有大對象會怎麼樣?它會在這種情況下處理嗎? – Sumit
我不明白爲什麼不,爲什麼不,如果你有一個大的單一級別的對象,我會建議使用Object.assign,(個人觀點)我認爲使用內置的語言功能更好的時候,他們會做這項工作。對於大型多級對象,此方法將正常工作。 –
你可以指定你的新對象的內容? – void
傳播操作符使淺拷貝,所以任何深層對象仍然不幸被引用。 –