小程序
小游戏
企业微信
微信支付
扫描小程序码分享
代码原意只是将list1 复制为 list2,并修改 list2 [0].s_state 的值,但执行结果却同时将 list1 [0].s_state 的值也修改了
执行:
var list2 = this.data.list1
list2 [0].s_state = "red"
this.setData({list2})
结果:
this.data.list2 [0].s_state 及 this.data.list1 [0].s_state 两个值均被修改。
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
这是js深拷贝典型应用场景,一般就跟楼上说的,使用JSON.parse、JSON.stringify,建议百度一下js数据类型、数据结构相关资料
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
你的三行代码,实际上的效果就是如下 list2 和 list1 都指向的同一个对象
this
.data.list1[0].s_state =
"red"
.data.list2 =
.data.list1
var
list2 =
list2 [0].s_state =
.setData({list2})
如果 list1 数据量不大,想实现你想要的效果可以这样写, 主要是进行深拷贝
那个……bug在哪?
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
这是js深拷贝典型应用场景,一般就跟楼上说的,使用JSON.parse、JSON.stringify,建议百度一下js数据类型、数据结构相关资料
你的三行代码,实际上的效果就是如下 list2 和 list1 都指向的同一个对象
this
.data.list1[0].s_state =
"red"
this
.data.list2 =
this
.data.list1
var
list2 =
JSON.parse(JSON.stringify(this.data.list1));list2 [0].s_state =
"red"
this
.setData({list2})
如果 list1 数据量不大,想实现你想要的效果可以这样写, 主要是进行深拷贝
那个……bug在哪?