ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の「Array.fill()」がコピーではなく参照を作成するのはなぜですか?それを修正するにはどうすればよいですか?

JavaScript の「Array.fill()」がコピーではなく参照を作成するのはなぜですか?それを修正するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-30 09:50:15229ブラウズ

JavaScript の

Why Does JavaScript's `Array.fill()` Create References Instead of Copies, and How Can I Fix It?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。