当前位置: 首页 > news >正文

JS之使用for...of赋值失败的原因分析

原代码为

for (let tab of tabList.value) {const subFormData = subOrderListMap.value[tab.subFormWebUuid];debuggerif (subFormData) {tab.formStatus = "已完成";tab = { ...subFormData, ...tab };}
}

这段代码是在遍历 tabList.value 数组,并尝试根据 tab.subFormWebUuid 从 subOrderListMap.value 中获取对应的数据 subFormData。如果获取到了数据,就会:

1. 将 tab.formStatus 设置为 "已完成"

2. 使用对象扩展运算符将 subFormData 的属性合并到 tab 上

不过这里有一个潜在的问题:在 for...of 循环中直接修改循环变量 tab 并不会改变原数组中的元素。因为 tab 只是原数组元素的一个引用副本,重新赋值 tab 只会改变这个副本,而不会影响原数组。
可以修改为
for (let i = 0; i < tabList.value.length; i++) {const tab = tabList.value[i];const subFormData = subOrderListMap.value[tab.subFormWebUuid];if (subFormData) {// 直接更新原数组中的元素tabList.value[i] = {...subFormData,...tab,formStatus: "已完成",};}
}

这样修改后,原数组中的元素才会被真正更新。

 

http://www.jsqmd.com/news/826/

相关文章:

  • Linux /lib/modules/$(uname -r)/ 目录功能作用详解
  • 《建筑的永恒之道》第 27 章:道之核心
  • 软件工程第二次作业_个人项目
  • Linux命令大全(档案管理)
  • 小狼毫雾凇拼音安装部署
  • Chapter 3 Resize and Cropping
  • 详细介绍:java中常见的几种排序算法
  • Linux 内核VRF
  • 使用FFmpeg转换m4a
  • 提升多屏监控体验/新增辅屏预览功能/轻松实现跨屏实时监控/支持高达500路多个屏幕同时显示
  • [Java SE/文件系统/IO] 核心源码精讲:java.io.File
  • Linux 内核整体架构详解
  • Ubuntu 磁盘扩容与扩容失败障碍解决( df -h 与 GParted 显示空间不一致的问题 -LVM)
  • httplb 服务器
  • atoi() - 字符串( ASCLL )转换为整数( int )
  • 02.Python:Flash初步使用
  • 解决Kubernetes集群中master节点无法与node节点通信的策略
  • 从高版本的sqlserver向低版本的sqlserver上复制表和数据的方法
  • 【ROS2】 忽略局域网多机通信导致数据接收的bug - 教程
  • 在Ubuntu18.04安装兼容JDK 8的Eclipse集成开发环境
  • 【php】带数组的文件列表生成,返回数组
  • 配置Nginx以支持Websocket连接的方法
  • Extundelete工具恢复数据
  • 最新!!!MySQL环境搭建(windows系统) - 详解
  • 重新理解12306:它卖的从来不是“库存”,而是“状态”
  • 基于Python+Vue开发的房产销售管理系统源码+运行步骤
  • WinSCP从Windows传文件到Linux,文件名为中文显示乱码
  • 混合架构(SpringCloud+Dubbo)的整合方案与适用场景(一) - 教程
  • Oracle中case when函数和decode函数
  • Jmeter生成随机数