0

配列を何かに設定してから、2 番目の配列の値を最初の配列の値に設定しようとしています。ただし、2 番目の配列の変数を最初の配列の変数と等しく設定すると、2 番目の配列は最初の配列のクローンになり、それを正確に模倣するように見えます。これは私が望んでいるものではありません — 2 番目の配列を最初の配列の現在の値と同じに設定したいだけです。これは基本的な問題だと思いますが、それを解決する最善の方法がわかりません。

デモ: 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

2番目の配列は最初の配列のクローンになり、それを正確に模倣しているようです

いいえ。ポイントは、もう 2 番目の配列がないことです。同じ配列を指す 2 つの変数があるだけです。

2番目の配列を最初の配列の現在の値と等しく設定したいだけです

そのためには、新しい配列を作成し、すべての項目値をコピーする必要があります。最速の方法は次を使用していsliceます:

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

これは、変数が配列自体ではなく、配列への参照であるためです。これを試して。

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