VUE2两个数组赋值相同时,修改一个数组另一个数组也会改变的问题

问题描述:

定义了两个属性A、B,都是数组类型,两个属性同时赋予了同样的值。

目的:a操作后,A数组会更改,b操作后,A数组的值会变回B数组。

//定义:
tableData: [],
tableTmpData: []

//赋值:
this.tableData = res.data
this.tableTmpData = res.data

//操作a
删除 this.tableData 中的某些元素

//操作b
恢复 this.tableData (值恢复到初始状态)

结果:A数组更改后,B数组同时被修改

问题原因:VUE2中两个数组来源于同一个对象的指针引用,数组间传递的是引用地址,因此两个数组引用的是同一个对象,只要其中一个数组改变,另一个数组就会改变。

解决方法:

//赋值时,这样写(等同遍历tableData后重新赋值,“...”是ES6的语法:扩展运算符):
this.tableData = res.data
this.tableTmpData = [...this.tableData]

//删除tableData中某些元素时,可以重新赋值,例如:
const newData = []
this.tableData.forEach(function (item, index) {
    if (item !== '') {
        newData.push(item)
    }             
})

this.tableData = newData

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值