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

vue里面接口获取的数组数据我赋给了两个变量,然后其中一个变量通过push添加了一个值,但是发现另一个变量也同步发生变化,如下:
apiGetDeviceType().then(response=>{
letdata=response.data
this.deviceType1=data
this.deviceType2=data
this.deviceType1.push({
name:'全部',
code:'all'
})
})
不知道为啥
牧羊人nacy
浏览 2267回答 2
2回答

慕标5832272

因为你的this.deviceType1和this.deviceType2都是指针指向response.data的,并不是独立的两个变量,而是两个一样的索引,所以你当你修改哪一个的属性,另一个也会跟着变。用json.parse(json.stringify(response.data))进行拷贝response.data就可以了

FFIVE

基础啊..少年这里的data是一个对象,在js中是引用类型,赋予的不是值,而是引用的地址例如demoletobj={a:1}//引用类型lettemp1=objlettemp2=obj//此时temp1,和temp2都指向了obj,但不代表分成两份temp1.a=2console.log(temp1)//{a:2}console.log(temp2)//{a:2}当然为了实现“分成两份”可以参考浅拷贝与深拷贝
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript