评论

微信小程序:data里的数组赋值给变量,修改变量,data数组值也会改变

data里的数组赋值给变量,修改变量,data数组值也会改变 踩坑日记

问题:newArray执行了倒叙后执行正常,但是data里的array也倒叙了
data:{
  array:[
    {id:0},{id:1}
  ]
}
-----------------------
var newArray = this.data.array
//倒叙数组
newArray.reverse()
console.log(newArray);
console.log(this.data.array)
//执行结果
[{id:1},{id:0}]//newArray
[{id:1},{id:0}]//this.data.array
------------------------------
解决方案:查阅相关资料后,发现这样的赋值并不是真的赋值,而是传递的性质,所以需要将数组array转换json字符串后,才算是赋值
------------------------------
var newArray = JSON.parse(JSON.stringify(this.data.array));
newArray.reverse()
console.log(newArray);
console.log(this.data.array)
//执行结果
[{id:1},{id:0}]//newArray
[{id:0},{id:1}]//this.data.array
------------------------------
【注意】这种问题只会出现在你的数组类型是键值对的情况
最后一次编辑于  2020-07-14  
点赞 4
收藏
评论

4 个评论

  • notfound
    notfound
    2020-07-15

    这就是js的基本类型和引用类型的区别

    2020-07-15
    赞同 2
    回复
  • 随缘
    随缘
    2020-09-24

    我也遇到这个问题没法解决,有人会吗

    2020-09-24
    赞同 1
    回复 1
    • 比昂
      比昂
      2020-09-24
      我这个不是写了解决方案么
      2020-09-24
      回复
  • 比茄多耳
    比茄多耳
    2021-05-05

    靠,找了一天,以为是自己哪写错了,谢谢楼主!

    2021-05-05
    赞同
    回复
  • admin
    admin
    2020-07-15

    不明觉厉

    2020-07-15
    赞同
    回复
登录 后发表内容