问个javascript数组中对象内存地址引用的问题

把a赋值给b


let a = [{

  m: 1

}]


let b = [...a]


b[0].m = 2


console.log(a)

console.log(b)

结果:


[ { m: 2 } ] // a

[ { m: 2 } ] // b

改动b里某个元素的属性时,a对应元素里的m属性也跟着变了


那么,怎么能让数组b里的对象重新指向新的内存地址呢?

期望结果:


[ { m: 1 } ] // a

[ { m: 2 } ] // b


子衿沉夜
浏览 484回答 2
2回答

慕盖茨4494581

拷贝对象,而不是引用对象,assign与...一样都是浅拷贝let b = a.map(item=>{    return Object.assign({},item)})

千万里不及你

let a = [{  m: 1}]let b = JSON.parse(JSON.stringify(a))b[0].m = 2console.log(JSON.stringify(a))console.log(JSON.stringify(b))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript