検索

ホームページ  >  に質問  >  本文

JavaScript - 配列の割り当ての問題

arr の値を arrnew に割り当てるのはなぜですか?また、arr が変化すると arrnew も変化するのはなぜですか? arrnewでarrのデータを取得したい場合、arr以降の操作を行わずに書き込むにはどうすればよいでしょうか?
let arr=[1,2,3,4,5]
let arrnew=arr
arr=arr.sort((a,b)=>{return b-a})
コンソール.log(arr)//[5, 4, 3, 2, 1]
console.log(arrnew)//[5, 4, 3, 2, 1]

高洛峰高洛峰2705日前644

全員に返信(4)返信します

  • 世界只因有你

    世界只因有你2017-07-05 10:41:07

    1. 配列もオブジェクトおよび参照型です。代入時にはアドレスが割り当てられ、代入のために新しいオブジェクトが複製されることはありません。

    2. sortは元の配列を変更します

    上記2点をまとめると、arrを変更すると当然arrnewも変更されます

    返事
    0
  • 世界只因有你

    世界只因有你2017-07-05 10:41:07

    arrnew = arr.slice() にしてみます

    返事
    0
  • 高洛峰

    高洛峰2017-07-05 10:41:07

    この記事はとても役に立ちます!クリックしてください

    返事
    0
  • 習慣沉默

    習慣沉默2017-07-05 10:41:07

    あなたのarrnewへの割り当ては、アドレスへの単なる参照です。

    配列をコピーしたい場合は、次のようにスプレッド演算子を使用できます:

    リーリー

    返事
    0
  • キャンセル返事