ホームページ >ウェブフロントエンド >jsチュートリアル >元の配列が変更されると JavaScript 配列のコピーも変更されるのはなぜですか?
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 サイトの他の関連記事を参照してください。