最近我在javascript中听到了一些叫做浅层复制的内容。
我了解到 array.slice(0)将返回原始数组的浅表副本(意味着对原始数组所做的更改将反映在重复数组中)..但它不是发生。
original = [1,2];
duplicate = original.slice(); //thinking it as a shallow copy
original.push(3);
现在原始数组有[1,2,3]但重复数组有[1,2]。
据我所知,我认为浅拷贝会反映两个数组的变化,因此两个数组都应该相同。
但如果我喜欢这样,它就会发生:
original = [1,2];
duplicate = original; //thinking it as a deep copy
original.push(3);
那里有没有很好的解释器?
答案 0 :(得分:0)
.slice()
调用会创建一个新数组。它与原始阵列截然不同,两者之间没有持久的关系。因此,在您的第一个代码示例中调用.slice()
之后,“复制”数组就是独立的。对原始的更改仅反映在原始数组中。
答案 1 :(得分:0)
浅拷贝只会在数组中应用元素。调用A B C
0 0.02 0.00
0.08 0.08 0.06
0.19 0.18 0.14
0.37 0.31 0.22
0.59 0.47 0.38
0.81 0.72 0.44
0.98 0.84 0.44
后,您将获得一个新数组。将反映对元素的更改,对数组的更改不会。