JSのこの2次元配列に問題があります。 a[1][0]
を変更すると、a[0][0]
が変更されます。私はそれを初期化する方法に何か間違っていますか?はいの場合は、どうすれば適切に初期化できますか?fillを使用して作成されたこの2次元配列の他のセルに変更が加えられたのはなぜですか?
>var a = Array(100).fill(Array(100).fill(false));
>a[0][0]
>false
>a[1][0]
>false
>a[1][0] = true
>true
>a[1][0]
>true
>a[0][0]
>true
あなたは 'a.fillは()'引数の単一のインスタンスを作成し、(オブジェクトのような挙動を)それをコピーしないことを、覚えておいてください。したがって、 'a'のすべての要素は同じ正確なオブジェクトです。 –
この質問は、各言語の文字通り数十回現れます。 –