如何在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看起来就是错误且昂贵。
立即学习“Java免费学习笔记(深入)”;
那么我们该怎么做呢?
答案:
const obj2 = StructuredClone(obj1);
现在你已经创建了 obj1 的深层副本,并且 obj1 和 obj2 是完全不同的对象。
注意: StructuredClone() 方法是新推出的方法,可能无法在 2022 年 3 月之前的浏览器中运行。
这是我的第一篇文章。请发表评论并联系,让我知道我可以在下一篇文章中做得更好。
谢谢!!!