Array.fill(Array) 参照によりコピーを作成します
Array.fill を使用して多次元配列を作成する場合は、次の点に注意することが重要です。内部配列は最初は参照によるコピーです。これは、1 つの内部配列に対する変更が、同じ Array オブジェクトを参照する他のすべての配列に反映されることを意味します。
例:
let m = Array(6).fill(Array(12).fill(0)); m[0][0] = 1; console.log(m[1][0]); // Outputs 1 instead of 0
この問題に対処するには、Array.from を使用できます。 () Array.fill():
let m = Array.from({length: 6}, e => Array(12).fill(0)); m[0][0] = 1; console.log(m[0][0]); // Expecting 1 console.log(m[0][1]); // Expecting 0 console.log(m[1][0]); // Expecting 0
Array.from() の代わりに、反復可能なオブジェクトのコピーが作成されます (この例ではこの場合、長さプロパティと新しい配列を返すマッピング関数を持つオブジェクト)。これにより、各内部配列が独立し、1 つの配列を変更しても他の配列に影響を与えないことが保証されます。
以上がArray.fill(Array) が多次元配列で参照によってコピーを作成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。