当前位置: 首页 > 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.hskmm.com/?act=detail&tid=11722

相关文章:

  • String
  • Linux /lib/modules/$(uname -r)/ 目录功能作用详解
  • 《建筑的永恒之道》第 27 章:道之核心
  • 软件工程第二次作业_个人项目
  • Linux命令大全(档案管理)
  • 小狼毫雾凇拼音安装部署
  • Chapter 3 Resize and Cropping
  • 详细介绍:java中常见的几种排序算法
  • 使用FFmpeg转换m4a
  • 提升多屏监控体验/新增辅屏预览功能/轻松实现跨屏实时监控/支持高达500路多个屏幕同时显示
  • [Java SE/文件系统/IO] 核心源码精讲:java.io.File
  • Linux 内核整体架构详解
  • atoi() - 字符串( ASCLL )转换为整数( int )
  • 02.Python:Flash初步使用
  • 解决Kubernetes集群中master节点无法与node节点通信的策略
  • 从高版本的sqlserver向低版本的sqlserver上复制表和数据的方法
  • 在Ubuntu18.04安装兼容JDK 8的Eclipse集成开发环境
  • 【php】带数组的文件列表生成,返回数组
  • 配置Nginx以支持Websocket连接的方法
  • Extundelete工具恢复数据
  • 重新理解12306:它卖的从来不是“库存”,而是“状态”
  • 基于Python+Vue开发的房产销售管理系统源码+运行步骤
  • 混合架构(SpringCloud+Dubbo)的整合方案与适用场景(一) - 教程
  • 安全技术深度探讨:从鱿鱼皮肤到AI漏洞挖掘
  • 【Bluedroid】A2DP Source 音频流暂停流程解析[3]:AVDTP 协议中 Suspend Accept 响应的处理流程与建立分析(Suspend Accept)
  • 安装WSL
  • 数据建模流程分析
  • 数学笔记
  • PHP8.5 Pipeline Operator 你应该了解的 8 个特性
  • Nvidia Orin DK 本地 ollama 主流 20GB 级模型 gpt-oss, gemma3, qwen3 部署与测试 - 实践