ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の「Array.fill()」がコピーではなく参照を作成するのはなぜですか?それを修正するにはどうすればよいですか?
JavaScript の
Array.fill(): 参照と値の注意事項
Array.fill() は、使用される JavaScript メソッドです配列に指定された値を入力します。ただし、Array.fill() は値ではなく参照を操作することを理解することが重要です。
問題: 参照と値
次のコードを考えてみましょう。
let m = Array(6).fill(Array(12).fill(0)); m[0][0] = 1; console.log(m[1][0]); // Outputs 1 instead of 0
ここでは、Array.fill() を使用して 6x12 行列を作成します。ただし、m0 を 1 に設定すると、予期せず m1 も 1 になります。これは、Array.fill() がすべて同じ Array オブジェクトを参照する内部配列を作成するためです。
期待される動作: 値
参照する代わりに、値をコピーしたい場合があります。つまり、m0 を変更しても m1 には影響しません。
解決策: Array.from() を使用する
Array.fill() に参照ではなく値を強制的にコピーするにはでは、Array.from() を次のように使用できます。
let m = Array.from({length: 6}, e => Array(12).fill(0)); m[0][0] = 1; console.log(m[1][0]); // Outputs 0 as expected
Array.from() は、各内部配列を確実にします。は個別のオブジェクトであり、意図しない値の共有を防ぎます。
結論
Array.fill() を使用するときは、参照と値の違いに注意してください。参照ではなく値をコピーしたい場合は、代わりに Array.from() の使用を検討してください。
以上がJavaScript の「Array.fill()」がコピーではなく参照を作成するのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。