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]
配列もオブジェクトおよび参照型です。代入時にはアドレスが割り当てられ、代入のために新しいオブジェクトが複製されることはありません。
sort
は元の配列を変更します上記2点をまとめると、arrを変更すると当然arrnewも変更されます
arrnew = arr.slice() にしてみます
この記事はとても役に立ちます!クリックしてください
あなたの
arrnew
への割り当ては、アドレスへの単なる参照です。配列をコピーしたい場合は、次のようにスプレッド演算子を使用できます:
リーリー