根据特定规则生成合并数据,遍历循环时会存在数据错乱等情况的问题排查(深拷贝 仅自己记录)

news2024/10/5 19:09:08

问题前景

在合并生成领料单,选择相同物料,合并领料,但因批次,数量不一样,需要单独生成一个主单据下面显示具体的物料,主单据的数量必须是选择单据的数量累加
两个相同的子件编码,点击合并领料,由前端生成一个主单据
由前端生成的单据,现在数量是正确的

错误代码演示

 const temp = JSON.parse(JSON.stringify(this.lydata.orderProdPbmList))
    const dataList = temp
    const obj = {}
    const peon = temp.reduce((cur, next) => {
      if (obj[next.materialCode]) {
        console.log('obj[next.materialCode]', next.planQty)
      } else {
        obj[next.materialCode] = true && cur.push(next)
      }
      return cur
    }, [])
    peon.forEach(item => {
      let sum = 0
      const children = []
      dataList.forEach(e => {
        if (item.materialCode === e.materialCode) {
          sum += e.planQty - e.lockQty
          children.push(e)
        }
      })
      item.children = children
      item.totalQty = sum
    })
    this.mergeListShow = peon
  

代码导致的数据错误

正确代码

 const temp = JSON.parse(JSON.stringify(this.lydata.orderProdPbmList))
    const dataList = [...temp]
    const obj = {}
    const peon = temp.reduce((cur, next) => {
      if (obj[next.materialCode]) {
        console.log('obj[next.materialCode]', next.planQty)
      } else {
        obj[next.materialCode] = true && cur.push(next)
      }
      return cur
    }, [])
    peon.forEach(item => {
      let sum = 0
      const children = []
      dataList.forEach(e => {
        if (item.materialCode === e.materialCode) {
          sum += e.planQty - e.lockQty
          children.push({ ...e })
        }
      })
      item.children = children
      item.totalQty = sum
    })
    this.mergeListShow = peon

问题:引用的问题,引用了地址。数组和对象的深拷贝

在这里插入图片描述

children.push({ ...e })//对象深拷贝
const temp = JSON.parse(JSON.stringify(this.lydata.orderProdPbmList))
    const dataList = [...temp]//数组深拷贝

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1209217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOV5中parser参数配置

源码下载链接:ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com) 需要配置的参数:--data parser.add_argument(--data, ...):添加一个用于数据配置文件的路径的参数。 可以直接修改&am…

达索系统SOLIDWORKS 2024钣金和结构系统新功能

达索系统SOLIDWORKS钣金和结构系统是大家比较熟悉的模块了,在2024版本中钣金和结构系统功能也做了很棒的提升。接下来让我们看看如何使用达索系统SOLIDWORKS 2024钣金和结构系统的一些新功能快速完成相应的设计。 达索系统SOLIDWORKS 2024的钣金提供了槽口延伸功能…

【C++】一维字符数组 与 二维字符数组

一维字符数组 一维字符数组 可以通过数组名直接进行整体输入和输出&#xff08;注意&#xff1a;当使用一维字符数组存储字符串时&#xff0c;因为元素尾部会有一个空字符\0,所以需要给空字符\0留一个位置&#xff09; char a[5]; cin>>a; cout<<a;二维字符数组 …

通过ping来测试网络带宽

在windows下通过 ping -l 5000 192.168.31.1 其中5000为设置ping的单个包的大小 192.168.31.1为目的地地址 假设ping 5000字节平均耗费1ms而ping 45000字节平均耗费4ms&#xff0c;因此&#xff0c;往返额外花费3ms单程额外花费1.5ms&#xff0c;多发送40000字节即320000比特…

[文件读取]GoCD 任意文件读取漏洞 (CVE-2021-43287)

1.1漏洞描述 漏洞编号CVE-2021-43287漏洞类型文件读取漏洞等级⭐⭐漏洞环境VULFOCUS攻击方式 描述: GoCD 一款先进的持续集成和发布管理系统,由ThoughtWorks开发。&#xff08;不要和Google的编程语言Go混淆了&#xff01;&#xff09;其前身为CruiseControl,是ThoughtWorks在…

MySQL--MHA高可用

MHA相关知识 1.什么是MHA MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件MHA 的出现就是解决MySQL 单点故障的问题。目的&#xff1a;MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。MH…

揭秘软件测试培训骗局:如何从贩卖焦虑到高薪包就业

你可能并不是一个IT行业的从业者&#xff0c;也可能是第一次听说软件测试工程师这个岗位。但由于看了某个网站的广告&#xff0c;或者听某个人说可以花钱培训软件测试技术&#xff0c;入职软件测试工程师岗位&#xff0c;于是动了这方面的心思。 但是互联网上有很多地方说&…

Kstry: 业务架构的首选之选

在当今数字化时代&#xff0c;构建稳健且高效的业务架构对于企业的成功至关重要。Kstry作为一种创新性的技术架构&#xff0c;已经在各个领域展现出卓越的表现。本文将探讨为何Kstry被视为业务架构的首选&#xff0c;并介绍其独特的特点和优势。 引言 业务架构是指基于企业战略…

C语言—i++、++i、条件运算符、goto语句、注释

i和i #include <stdio.h> int main() {int i5,j;j i;printf("i%d,j%d\n", i, j);i 5;j i;printf("i%d,j%d\n", i, j);system("pause");return 0;}i6,j6 i6,j5 请按任意键继续. . .条件运算符 goto语句 #include <stdio.h> int …

工业交换机的解决方案

在工业网络产品的早期阶段&#xff0c;主要关注的是工业交换机的电气、物理、结构等方面的特点。如今的工业网络&#xff0c;在规范硬件条件的同时&#xff0c;也正在向智能、灵活、高效的方向发展。除了注重硬件方面&#xff0c;它还越来越重视软件特性&#xff0c;如网管、环…

【C#学习】button:只显示图片

第一步&#xff1a;设置按钮背景图片&#xff0c;并且图片随按钮大小变化 第二步&#xff1a;设置按钮使之只显示图片 button1.FlatStyle FlatStyle.Flat;//stylebutton1.ForeColor Color.Transparent;//前景button1.BackColor Color.Transparent;//去背景button1.FlatAppe…

Docker安装Octoprint 3D打印控制软件

Octoprint简介 Octoprint是一个运行在Linux系统上的开源套件&#xff0c;可以为普通的3D打印机添加强大的外围管理功能。 web管理界面远程操控摄像头实时监控视频录制、延时摄影在线切片图形化的温度曲线显示手机监控操作免SD卡和U盘通过插件和USB/GPIO接口实现更多功能 Oct…

Clickhouse学习笔记(15)—— Clickhouse备份

手动备份 参考官网&#xff1a;Backup and Restore | ClickHouse Docs 简单来说&#xff0c;就是我们可以通过ALTER TABLE ... FREEZE PARTITION ...命令为表分区创建一个本地副本&#xff0c;然后这个副本硬链接到/var/lib/clickhouse/shadow/文件夹&#xff0c;因此其不会耗…

如何在 Windows 10/11 上高质量地将 WAV 转换为 MP3

WAV 几乎完全准确地存储了录音硬件所听到的内容&#xff0c;这使得它变得很大并占用了更多的存储空间。因此&#xff0c;WAV 格式在作为电子邮件附件发送、保存在便携式音频播放器上、通过蓝牙或互联网从一台设备传输到另一台设备等时可能无法正常工作。 如果您遇到 WAV 问题&…

MCU常见通信总线串讲(五)—— CAN总线协议

&#x1f64c;秋名山码民的主页 &#x1f602;oi退役选手&#xff0c;Java、大数据、单片机、IoT均有所涉猎&#xff0c;热爱技术&#xff0c;技术无罪 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 获取源码&#xff0c;添加WX 目录 前言一…

DSP生成hex方法

以下使用两种方法生成的HEX文件&#xff0c;亲测可用 &#xff08;1&#xff09;万能法 不管.out文件是哪个版本CCS编译器生成的&#xff0c;只要用HEX2000.exe软件&#xff0c;翻译都可以使用。方法&#xff1a; hex2000 -romwidth 16 -memwidth 16 -i -o 20170817chuankou…

问题 G: Girls and Boys(最大独立集)

由于未知编号对应性别&#xff0c;故进行两次作图 详细看下图&#xff0c; 该图为转载&#xff1a; AC代码&#xff08;较转载代码修改过&#xff0c;源代码无法AC&#xff09;&#xff1a; #include<iostream> #include<string.h> using namespace std; #define …

Hadoop-HDFS架构与设计

HDFS架构与设计 一、背景和起源二、HDFS概述1.设计原则1.1 硬件错误1.2 流水访问1.3 海量数据1.4 简单一致性模型1.5 移动计算而不是移动数据1.6 平台兼容性 2.HDFS适用场景3.HDFS不适用场景 三、HDFS架构图1.架构图2.Namenode3.Datanode 四、HDFS数据存储1.数据块存储2.副本机…

基于 Redis 实现的分布式锁

获取锁 互斥&#xff1a;确保只有一个线程获得锁 # 添加锁 利用setnx的互斥性 127.0.0.1:6379> setnx lock thread1释放锁 手动释放锁 超时释放&#xff1a;获取锁时设置一个超时时间 #释放锁 删除即可 127.0.0.1:6379> del lock两步合成一步 help setSET key value …

轻量封装WebGPU渲染系统示例<31>- 若干线条对象(源码)

线条对象包括: AABB包围盒&#xff0c;OBB包围盒, 曲线&#xff0c;直线&#xff0c;圆&#xff0c;坐标轴&#xff0c;视锥体线框&#xff0c;矩形网格等。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/LineOb…