将JS数组传递给新数组

时间:2013-04-15 20:51:33

标签: javascript

对不起非常基本的问题我是新的。

如果我有一个数组并将其传递给一个新变量(newArray = oldArray)然后从newArray中删除一个元素,它似乎也会影响oldArray。

我的猜测是,它只是创建了对同一个变量的新引用,因此存储在oldArray中的数据现在有两个标识符?

如果是这样,我如何实际将oldArray中的元素传递给newArray,以便newArray独立于oldArray?

提前致谢

4 个答案:

答案 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)

如您所知,复制数组变量时,您将复制对原始数据的引用。

这是制作真实副本的一个目标 - 从第一个元素请求slice

 var newArray = oldArray.slice(0);