对不起非常基本的问题我是新的。
如果我有一个数组并将其传递给一个新变量(newArray = oldArray)然后从newArray中删除一个元素,它似乎也会影响oldArray。
我的猜测是,它只是创建了对同一个变量的新引用,因此存储在oldArray中的数据现在有两个标识符?
如果是这样,我如何实际将oldArray中的元素传递给newArray,以便newArray独立于oldArray?
提前致谢
答案 0 :(得分:1)
我的猜测是,它只是创建了对同一个变量的新引用,因此存储在oldArray中的数据现在有两个标识符?
是的,您的新变量和旧变量都指向相同的数组。通过一个引用(变量)对阵列的操作通过另一个引用自然可见,因为只有一个数组。
为避免这种情况,您必须制作阵列的副本。有几种方法可以做到这一点,其中一种方法是使用slice
:
var newArray = oldArray.slice(0);
slice
返回从给定索引开始的数组的浅表副本。如果您为其指定索引0
,则会复制整个数组。
答案 1 :(得分:0)
最快的方法是使用数组函数返回一个新的数组实例。通常,我使用:
var newArray = oldArray.slice(0);
答案 2 :(得分:0)
在这种情况下,您必须使用切片方法克隆数组:
newArray = oldArray.slice(0);
答案 3 :(得分:0)