如何在Javascript中深度復制嵌套對象
所以你有一個嵌套對象,假設你需要將其復制到與原始變量完全不同的另一個變量。
我們今天過得怎么樣?
原物:
const obj1 = {name: ‘John Smith’, 地址: {mailing: {line1: ‘地址行 1’, line2: ‘地址行 2′, city:’紐約’}}};
復制對象:
方法一:
使用擴展運算符
const obj2 = {…obj1};
方法二:
有些人甚至更喜歡昂貴的操作:
const obj2 = JSON.parse(JSON.stringify(obj1));
方法 1 的問題是擴展運算符在沒有引用的情況下復制對象,但它不會對嵌套對象執行此操作,例如為 obj1 的地址鍵。所以改變 obj2.address.line1 也會改變 obj1.address.line1。
而方法2看起來就是錯誤且昂貴。
那么我們該怎么做呢?
答案:
const obj2 = StructuredClone(obj1);
現在你已經創建了 obj1 的深層副本,并且 obj1 和 obj2 是完全不同的對象。
注意: StructuredClone() 方法是新推出的方法,可能無法在 2022 年 3 月之前的瀏覽器中運行。
這是我的第一篇文章。請發表評論并聯系,讓我知道我可以在下一篇文章中做得更好。
謝謝!!!