Javascript 使用扩展运算符深度复制数组的语法

Javascript 使用扩展运算符深度复制数组的语法,javascript,ecmascript-6,deep-copy,Javascript,Ecmascript 6,Deep Copy,我知道通过以下方式深度复制对象和数组 带有对象:Way1:JSON-way const obj1={ id:5, 姓名:{ 第一:"蒂努",, 最后:{ 其他:'k' } } }; //深度复制方式1:JSON方式 const obj2=JSON.parse(JSON.stringify(obj1)); //修改嵌套的第二个对象 obj2.names.last.other='f'; console.log(obj1);//打印{id:5,名称:{first:'tinu',last:{other

我知道通过以下方式深度复制对象和数组

带有对象:Way1:JSON-way

const obj1={
id:5,
姓名:{
第一:"蒂努",,
最后:{
其他:'k'
}
}
};
//深度复制方式1:JSON方式
const obj2=JSON.parse(JSON.stringify(obj1));
//修改嵌套的第二个对象
obj2.names.last.other='f';
console.log(obj1);//打印{id:5,名称:{first:'tinu',last:{other:'k'}}

console.log(obj2);//打印{id:5,名称:{first:'tinu',last:{other:'f'}}}
对于每个嵌套数组,将其替换为
[…originalArrayReference]
。如果必须替换特定标记,请首先在该索引前后切片外部数组:

constarray1=[[a']、[b'、[c'];
常数array2=[…array1[0]],…array1.slice(1)];
//修改嵌套的第二个数组
array2[0]。推送(“推送”);
控制台日志(array1);

控制台日志(array2)谢谢,但是有没有不使用切片的方法?因为我们在用对象进行深度复制时也没有使用任何方法。不容易
.slice
plus spread可能是处理不可变结构时深度克隆阵列的最佳方法。只有当你有一个数组展开时才传播,但是为了在另一个数组中间克隆一个数组,你还需要正确地在中间排列那个数组中的其他条目,这需要<代码> .Studio(或者明确指出每个索引,这也消除了对
的需要,但这是重复的和不灵活的)