创建备份阵列

时间:2013-11-03 03:00:44

标签: javascript arrays variables

我想在testArray中存储tempArray,然后删除testArray。在下面的代码中tempArraytestArray一起被删除。请解释为什么这不符合计算最小化的方法。

var testArray = new Array();
testArray.push("green");
alert(testArray.length);//returns one
var tempArray = new Array();
var tempArray = testArray;
alert(tempArray.length);//returns one
testArray.length = 0;
alert(tempArray.length);//returns zero

3 个答案:

答案 0 :(得分:3)

var tempArray = testArray.slice();

创建testArray的副本

答案 1 :(得分:3)

这是一个按值传递与传递引用的问题。当你这样做

var tempArray = testArray;

您正在为testArray创建引用。基本上tempArray只是同一个对象的另一个名称。正如其他答案所指出的那样,你需要的是像slice()这样的方法,它可以复制testArray中的数据

如果你发现这个令人困惑,你可能想要通过引用进行一些研究,而不是通过值传递 - 它使语言与语言有很大不同。我做了一个快速谷歌'Javascript传递参考vs传递值',并找到了一些文章。例如,this看起来可能是一个不错的起点。

答案 2 :(得分:1)

您的两个变量引用相同的数组,因此使用one改变数组的长度会改变另一个。你需要复制一份。

而不是

var tempArray = new Array();
var tempArray = testArray;

DO

var tempArray = testArray.slice(0);