当前位置: 首页 > 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.zskr.cn/news/8868.html

相关文章:

  • Linux /lib/modules/$(uname -r)/ 目录功能作用详解
  • 软件工程第二次作业_个人项目
  • Chapter 3 Resize and Cropping
  • 解决Kubernetes集群中master节点无法与node节点通信的策略
  • 配置Nginx以支持Websocket连接的方法
  • Extundelete工具恢复数据
  • 最新!!!MySQL环境搭建(windows系统) - 详解
  • SQLite数据库 - 教程
  • 【Bluedroid】A2DP Source 音频流暂停流程解析[3]:AVDTP 协议中 Suspend Accept 响应的处理流程与建立分析(Suspend Accept)
  • Mysql查询条件里的字符串不加引导索引失效
  • 详细介绍:在Ubuntu平台搭建RTMP直播服务器使用SRS简要指南
  • 实用指南:在 k8s 上部署 Kafka 4.0 3节点集群
  • 完整教程:VLAN划分——TRUNK
  • 现代操作系统-音频处理技术1 Linux驱动底层
  • 智元首次明确七人合伙人团队
  • ABC424
  • 解决 Windows 无法挂载 HTTP WebDAV(AList,OpenList)的问题
  • HN CSP-S 2024 游记
  • 关于oj在创建文件夹失败的原因
  • 图解15:DNS工作原理
  • 图解12:软件开发8大模型
  • 图解13:软件版本是怎么命名的
  • 图解14:CDN(最近使用的都是阿里云的)
  • WINUI/WPF——自定义ListView
  • 用 Rust 实现英文数字验证码识别
  • 图解9:IDEA30款好用的插件
  • 图解10:Redis优化18招
  • 图解11:API和SDK区别
  • 短暂的初中OI学习记录
  • 实用指南:坤驰科技诚邀您参加——第十三届中国光纤传大会