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

发布于 09-07 16:34 字数 368 浏览 19 评论 0

把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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

因为看清所以看轻2022-09-14 16:34:31

拷贝对象,而不是引用对象,assign与...一样都是浅拷贝

let b = a.map(item=>{
    return Object.assign({},item)
})
孤寂小茶2022-09-14 16:34:31
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))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文