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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 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))

问题解决!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
JavaScript 前端开发
JS循环for、for...of、for...in
本文介绍了JavaScript中不同的循环语句,包括传统的`for`循环、`for...of`循环用于遍历数组和类数组对象、`for...in`循环用于遍历对象的属性,并通过示例代码展示了它们的用法和区别。
54 6
JS循环for、for...of、for...in
|
3月前
|
JavaScript 前端开发
JavaScript基础知识-流程控制之while循环
这篇文章介绍了JavaScript中的while循环和do...while循环的基础知识,并通过一个实际案例演示了如何使用while循环计算投资增长到特定金额所需的年数。
64 2
JavaScript基础知识-流程控制之while循环
|
2月前
|
JavaScript 前端开发
js循环有几种
js循环有几种
39 0
|
1月前
|
JavaScript
js动画循环播放特效源码(上班族的一天)
js动画循环播放特效是一段实现了包含形象的卡通小人吃、睡、电脑工作的网页动画,js循环动画,简单的画面设计。非常丝滑有意思,欢迎对此代码感兴趣的朋友前来下载参考。
30 2
|
3月前
|
前端开发 JavaScript
前端基础(八)_JavaScript循环(for循环、for-in循环、for-of循环、while、do-while 循环、break 与 continue)
本文介绍了JavaScript中的循环语句,包括for循环、for-in循环、for-of循环、while循环、do-while循环以及break和continue的使用。
133 1
前端基础(八)_JavaScript循环(for循环、for-in循环、for-of循环、while、do-while 循环、break 与 continue)
|
3月前
|
JavaScript 前端开发
js 变量作用域与解构赋值| 22
js 变量作用域与解构赋值| 22
|
3月前
|
JavaScript 前端开发
JavaScript基础知识-forEach循环
关于JavaScript基础知识中forEach循环的介绍。
55 1
JavaScript基础知识-forEach循环
|
3月前
|
JavaScript 前端开发 索引
|
2月前
|
JavaScript
自动循环提交js
自动循环提交js
22 0
|
3月前
|
JavaScript
js 循环数组取值
js 循环数组取值