js的直接赋值导致在循环中赋值失败的问题

写js遇到了一个问题,就是说我在for循环值通过循环的值给一个对象赋值,但是的话每次赋值打印的结果都为最后一次赋的值,然后我就开始了debugger,发现我debug执行的话并没有问题,但是如果不debug就还会出现所有的赋值都是最后一个值得问题,这是我的代码

      var poster_name = this.More_Temp_count['posterity_name']
      var city = this.More_Temp_count['city']
      var blackwidow_task = this.More_Temp_count['blackwidow_task']
      var redis_key = blackwidow_task['redis_key']
      var task_id = blackwidow_task['task_id']
      var key_test = blackwidow_task['blackwidow_output']['db_config_test']['key']
      var key_db = blackwidow_task['blackwidow_output']['db_config']['key']

      this.loading = true
      for (var x in city_list){
        // 构造请求参数
        console.log('1')
        console.log(city_list[x])
        // 每次循环重新赋值
        var More_Temp_count_copy = this.More_Temp_count
        More_Temp_count_copy['city'] = city_list[x]
        console.log(More_Temp_count_copy['city'])
        More_Temp_count_copy['posterity_name'] = poster_name.replace(city,city_list[x])
        More_Temp_count_copy['blackwidow_task']['redis_key'] = redis_key.replace(city,city_list[x])
        More_Temp_count_copy['blackwidow_task']['task_id'] = task_id.replace(city,city_list[x])
        More_Temp_count_copy['blackwidow_task']['blackwidow_output']['db_config_test'] = key_test.replace(city,city_list[x])
        More_Temp_count_copy['blackwidow_task']['blackwidow_output']['db_config'] = key_db.replace(city,city_list[x])
        console.log('准备多次新增的复制模板信息',More_Temp_count_copy["city"])
        console.log('2')
      }

———-然后我以为是因为请求异步的问题,然后把每次的值添加到一个列表里,在通过索引进行获取,然而还是不对

———最后公司大佬进行解决,是因为js的拷贝问题,js的=赋值会直接把对象的内存地址赋值过去,所以改More_Temp_count_copy这个参数就相当于改this.More_Temp_count,所以才导致问题出现,解决办法呢,就是用深拷贝,直接把对象转为字符串,然后将字符串拷贝过去,这样就不会有赋值失败的问题了,修改一行代码

        // 每次循环重新赋值
        var More_Temp_count_copy = JSON.parse(JSON.stringify(this.More_Temp_count))

问题解决!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小僵尸打字员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值