为了账号安全,请及时绑定邮箱和手机立即绑定

vue里面接口获取的数组数据我赋给了两个变量,然后其中一个变量push添加了一个值,但是发现另一个变量也同时增加了

vue里面接口获取的数组数据我赋给了两个变量,然后其中一个变量push添加了一个值,但是发现另一个变量也同时增加了

牧羊人nacy 2019-05-09 09:24:57
vue里面接口获取的数组数据我赋给了两个变量,然后其中一个变量通过push添加了一个值,但是发现另一个变量也同步发生变化,如下:apiGetDeviceType().then(response=>{letdata=response.datathis.deviceType1=datathis.deviceType2=datathis.deviceType1.push({name:'全部',code:'all'})})不知道为啥
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

因为你的this.deviceType1和this.deviceType2都是指针指向response.data的,并不是独立的两个变量,而是两个一样的索引,所以你当你修改哪一个的属性,另一个也会跟着变。用json.parse(json.stringify(response.data))进行拷贝response.data就可以了
                            
查看完整回答
反对 回复 2019-05-09
?
FFIVE

TA贡献1797条经验 获得超6个赞

基础啊..少年
这里的data是一个对象,在js中是引用类型,赋予的不是值,而是引用的地址
例如demo
letobj={a:1}//引用类型
lettemp1=obj
lettemp2=obj
//此时temp1,和temp2都指向了obj,但不代表分成两份
temp1.a=2
console.log(temp1)//{a:2}
console.log(temp2)//{a:2}
当然为了实现“分成两份”可以参考浅拷贝与深拷贝
                            
查看完整回答
反对 回复 2019-05-09
  • 2 回答
  • 0 关注
  • 2266 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信