2013-03-15 50 views
0

由数组构成的变量作为指向数组的指针以及它们何时充当数组副本?在javascript中处理数组的副本

例如,如果我有一个数组名为Array1

a1=Array1;  

a1复印件或指针数组。

如果我修改a1它是否也会修改Array1。通过修改我的意思是改变一个值,将某些东西推入数组,排序或者其他可以修改数组的方式。

谢谢,

+1

'x = [1,2,3]; y = x; y [0] = 7; console.log(x)'会输出'7,2,3'。 JS中的数组是对象,当你通过'newobj = origobj'复制一个对象时,你只是创建一个引用。你需要克隆数组对象来创建一个真正独立的副本。 – 2013-03-15 21:56:33

回答

1

JavaScript中的变量持有对数组的引用。

如果将变量值与arr2 = arr1复制,则将引用复制到同一个数组。因此,对arr2的任何更改都将更改为arr1

如果想要另一个变量保存到一个副本的引用,这样你就可以改变第二阵列,而不改变第一个,使用slice

var arr2 = arr1.slice(); 
+0

我不记得为什么,但我认为你希望它是'arr1.slice(0)' – rodneyrehm 2013-03-15 21:56:58

+0

你可能还想指出'.slice()'只创建一个* shallow *的数组副本。 – rodneyrehm 2013-03-15 21:58:16