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

JavaScript で Array.fill(Array) が参照によってコピーを作成するのはなぜですか?これを回避するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-28 15:38:12347ブラウズ

Why Does Array.fill(Array) Create Copies by Reference in JavaScript, and How Can This Be Avoided?

Array.fill(Array) JavaScript で参照によってコピーを作成する

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

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