ホームページ >ウェブフロントエンド >jsチュートリアル >元の配列が変更されると JavaScript 配列のコピーも変更されるのはなぜですか?

元の配列が変更されると JavaScript 配列のコピーも変更されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-18 21:31:14262ブラウズ

Why Do JavaScript Array Copies Change When the Original Changes?

JavaScript で配列を変更するとコピーに影響するのはなぜですか?

JavaScript では、配列はオブジェクトであり、変数はこれらのオブジェクトへの参照を保持します。オブジェクト自体。この継承により、新しい値を配列に割り当てるときに予期しない動作が発生する可能性があります。

次の例を考えてみましょう。

// Declare an array and its copy
var myArray = ['a', 'b', 'c'];
var copyOfMyArray = myArray;

// Modify the copy of the array
copyOfMyArray.splice(0, 1);

// Display the values
alert(myArray); // ['b', 'c']
alert(copyOfMyArray); // ['b', 'c']

copyOfMyArray を操作することにより、誤って myArray を変更してしまいました。これは、myArray や copyOfMyArray などの変数が同じ基になる配列オブジェクトを指しているためです。

配列と数値

対照的に、myNumber や copyOfMyNumber などの数値を扱う場合は、各変数は値自体のコピーを保持します。一方を変更しても、もう一方には影響しません。

var myNumber = 5;
var copyOfMyNumber = myNumber;

// Decrement the copy of the number
copyOfMyNumber--;

// Display the values
alert(myNumber); // 5
alert(copyOfMyNumber); // 4

結果と回避策

オブジェクトを適切に操作するには、この動作を理解することが重要です。本当に配列の個別のコピーが必要な場合は、スライス メソッドを使用して浅いコピーを作成します。

var copyOfMyArray = myArray.slice(0);

ただし、この浅いコピーは配列の要素への参照を複製するだけであることに注意してください。すべての内部オブジェクトは引き続き同じ元のインスタンスを参照します。

以上が元の配列が変更されると JavaScript 配列のコピーも変更されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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