我正在尝试将数组设置为某个值,然后将第二个数组的值设置为该第一个数组的值。但是,当我将第二个数组的变量设置为等于变量first数组时,第二个数组似乎只是成为第一个数组的克隆,并完全模仿它。这不是我想要的 - 我只想将第二个数组设置为等于第一个数组的当前值。我认为这是一个基本问题,但我不知道解决问题的最佳方法。
演示: http://jsfiddle.net/7rLvQ/
a = [-1, -1, -1];
b = [];
while (a[2] < 10) {
console.log(b + ", " + a);
a[2]++;
b = a;
}
答案 0 :(得分:5)
第二个数组似乎只是第一个数组的克隆,并且完全模仿它
没有。关键是没有第二个阵列了。你只有两个指向同一个数组的变量。
我只想将第二个数组设置为等于第一个数组的当前值
为此,您需要创建一个新数组并复制每个项目值。最快的方法是使用slice
:
b = a.slice(0);
答案 1 :(得分:1)
那是因为变量是对数组的引用,而不是对数组本身的引用。试试这个。
b = a.slice();