搜尋

首頁  >  問答  >  主體

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})
console .log(arr)//[5, 4, 3, 2, 1]
console.log(arrnew)//[5, 4, 3, 2, 1]

高洛峰高洛峰2781 天前683

全部回覆(4)我來回復

  • 世界只因有你

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

    1. 數組也是屬於對象,屬於引用類型,當進行賦值時,賦值的是地址,並不會克隆一個新對象進行賦值。

    2. sort會改原數組

    綜上兩點,改變arr自然會改變arrnew

    回覆
    0
  • 世界只因有你

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

    讓 arrnew = arr.slice()

    回覆
    0
  • 高洛峰

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

    這篇文章對你有很大幫助! click me

    回覆
    0
  • 習慣沉默

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

    你對arrnew的賦值只是地址的引用。

    如果要複製數組,可以使用擴充運算符,如下:

    let arrnew = [...arr];

    回覆
    0
  • 取消回覆