鍍金池/ 問(wèn)答/數(shù)據(jù)分析&挖掘  網(wǎng)絡(luò)安全  HTML/ 問(wèn)個(gè)javascript數(shù)組中對(duì)象內(nèi)存地址引用的問(wèn)題

問(wèn)個(gè)javascript數(shù)組中對(duì)象內(nèi)存地址引用的問(wèn)題

把a(bǔ)賦值給b

let a = [{
  m: 1
}]

let b = [...a]

b[0].m = 2

console.log(a)
console.log(b)

結(jié)果:

[ { m: 2 } ] // a
[ { m: 2 } ] // b

改動(dòng)b里某個(gè)元素的屬性時(shí),a對(duì)應(yīng)元素里的m屬性也跟著變了

那么,怎么能讓數(shù)組b里的對(duì)象重新指向新的內(nèi)存地址呢?
期望結(jié)果:

[ { m: 1 } ] // a
[ { m: 2 } ] // b
回答
編輯回答
囍槑

拷貝對(duì)象,而不是引用對(duì)象,assign與...一樣都是淺拷貝

let b = a.map(item=>{
    return Object.assign({},item)
})
2018年2月23日 20:42
編輯回答
刮刮樂(lè)
let a = [{
  m: 1
}]
let b = JSON.parse(JSON.stringify(a))
b[0].m = 2
console.log(JSON.stringify(a))
console.log(JSON.stringify(b))
2017年1月25日 23:40