数组被“链接”到不同的数组?

时间:2013-04-24 23:10:04

标签: javascript arrays

我正在尝试将数组设置为某个值,然后将第二个数组的值设置为该第一个数组的值。但是,当我将第二个数组的变量设置为等于变量first数组时,第二个数组似乎只是成为第一个数组的克隆,并完全模仿它。这不是我想要的 - 我只想将第二个数组设置为等于第一个数组的当前值。我认为这是一个基本问题,但我不知道解决问题的最佳方法。

演示: http://jsfiddle.net/7rLvQ/

a = [-1, -1, -1];
b = [];
while (a[2] < 10) {
    console.log(b + ", " + a);
    a[2]++;

    b = a;
}

2 个答案:

答案 0 :(得分:5)

  

第二个数组似乎只是第一个数组的克隆,并且完全模仿它

没有。关键是没有第二个阵列了。你只有两个指向同一个数组的变量。

  

我只想将第二个数组设置为等于第一个数组的当前值

为此,您需要创建一个新数组并复制每个项目值。最快的方法是使用slice

 b = a.slice(0);

答案 1 :(得分:1)

那是因为变量是对数组的引用,而不是对数组本身的引用。试试这个。

b = a.slice();