ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で Array.fill(Array) が参照によってコピーを作成するのはなぜですか?これを回避するにはどうすればよいですか?
Array.fill() は、配列に特定の値を設定するのに便利なメソッドです。ただし、配列内で配列を作成するために使用すると、参照の問題が発生します。
次の例を考えてみましょう:
let m = Array(6).fill(Array(12).fill(0));
このコードは、各要素が 0 である 6x12 行列を作成しようとします。ただし、内部配列はすべて同じ配列オブジェクトを参照します。
例:
m[0][0] = 1; console.log(m[1][0]); // Outputs 1 instead of 0
1 つの要素への変更は、同じ配列オブジェクトを参照する他のすべての要素に影響するため、上記のコードは 0 の代わりに 1 を出力します。
値でコピーを作成するには、次のような解決策があります。代わりに Array.from() を使用するには:
let m = Array.from({length: 6}, e => Array(12).fill(0));
この構文は、外側の配列の要素ごとに新しい配列を作成します。その結果、次のようになります。真の値コピーによる動作。
以上がJavaScript で Array.fill(Array) が参照によってコピーを作成するのはなぜですか?これを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。