0

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

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

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

    b = a;
}
4

2 回答 2

5

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

不,关键是不再有第二个数组。你只有两个变量指向同一个数组。

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

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

 b = a.slice(0);
于 2013-04-24T23:13:57.250 回答
1

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

b = a.slice();
于 2013-04-24T23:14:04.560 回答