vue子组件的数据处理后竟然影响了父组件的数据,导致父级的数据也同步变更了的问题解决

2023-11-14

文章目录

问题描述

需要在子组件中处理来自父组件的数据,将父级的千分位去掉,转为纯数字:

const originalData = [
  ["16", "33", "17", "1", "1", "14", "23", "21", "19", "76", "40", "16"],
  ["37,052.50", "2,346.99", "13,004.61", "0", "9,932.42", "33,316.57", "117,774.72", "12,736.32", "18,883.98", "242,959.26", "32,550.61", "6,036"]
];

在通过父级传递给子组件后,用props接收,在子组件中进行处理,最终想要的结果如下:

const originalData = [
  ["16", "33", "17", "1", "1", "14", "23", "21", "19", "76", "40", "16"],
  ["37052.50", "2346.99", "13004.61", "0", "9932.42", "33316.57", "117774.72", "12736.32", "18883.98", "242959.26", "32550.61", "6036"]
];

子组件的处理代码如下(省略了部分结构代码):

 props: {
    pdata: {
      type: Array,
      required: true,
      default: () => []
    }
  },

const data = [
  ["16", "33", "17", "1", "1", "14", "23", "21", "19", "76", "40", "16"],
  ["37,052.50", "2,346.99", "13,004.61", "0", "9,932.42", "33,316.57", "117,774.72", "12,736.32", "18,883.98", "242,959.26", "32,550.61", "6,036"]
];
//通过for循环嵌套遍历数组,去除千分位
for (let i = 0; i < data.length; i++) {
  for (let j = 0; j < data[i].length; j++) {
    data[i][j] = data[i][j].replace(/,/g, '');
  }
}

console.log(data);//打印的结果符合我的要求,但是发现父级的千分位也没有了

这种方式是直接改变了原数组的,导致父数据也没有千分位了,即使我深度复制父级数据再处理后,还是有此问题。

const data=[...this.pdata]
//而且我打印过,data!==pdata,可是还是出现了此问题,也就是父数据也没有千分位了
data = [
  ["16", "33", "17", "1", "1", "14", "23", "21", "19", "76", "40", "16"],
  ["37,052.50", "2,346.99", "13,004.61", "0", "9,932.42", "33,316.57", "117,774.72", "12,736.32", "18,883.98", "242,959.26", "32,550.61", "6,036"]
];

for (let i = 0; i < data.length; i++) {
  for (let j = 0; j < data[i].length; j++) {
    data[i][j] = data[i][j].replace(/,/g, '');
  }
}

console.log(data);// 尽管深度复制了,打印的结果符合我的要求,但是发现父级的千分位也没有了

问题解决

最终,我通过map解决了问题。最终将其改为:

const ndata = data.map((subArray) => {
       return subArray.map((item) => item.replace(/,/g, ""));
 });
console.log(ndata); //打印的结果符合我的要求,也不影响父级的千分位

我猜测原因可能是上面的扩展运算符只是影响到了第一层,第二层的数据还是原始数据的引用。

另外的问题是,为何在子组件处理的数据会影响到父组件的数据呢?有知道的同学可在下方留言

如果你在web前端开发、面试、前端学习路线有困难可以加我V:imqdcnn。免费答疑,行业深潜多年的技术牛人帮你解决bug。

祝你能成为一名优秀的WEB前端开发工程师!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue子组件的数据处理后竟然影响了父组件的数据,导致父级的数据也同步变更了的问题解决 的相关文章

随机推荐

  • 网关和IP地址不在同一个网段下

    海外的客户报告了一个问题 设备设置的网关地址不在设备所在的网段下面 例如 IP 192 168 135 2 NetMask 255 255 255 0 GateWay 192 168 8 1 现在的问题来了 设备能不能PING通网关 这个问
  • 解决vue 路由传参后退参数丢失的问题

    文章目录 业务需求 遇到问题 解决方案 利用localStorage 使用keep alive 业务需求 从A页面传参跳转B页面 B页面传参跳转C页面 C页面可以返回B页面 遇到问题 当C页面返回B页面时 由于B页面参数丢失导致页面渲染失败
  • Python爬虫逆向之加速乐

    先上链接 aHR0cHM6Ly93d3cubWlpdC5nb3YuY24v 网站分析 发现发起三次请求 第一次 状态码521 Set Cookie了一个jsluid 第二次 状态码依然是521 但是cookie里面多了一个jsl clear
  • C#使用Npgsql或SqlClient连接数据库

    目录 SqlClient连接SQL Server 安装SqlClient SqlConnection SqlCommand SqlConnection 和 SqlCommand的区别 Npgsql连接PostgreSQL 安装Npgsql
  • (java功能篇) jxl读取excel文本

    jxl是一个韩国人写的java操作excel的工具 在java的开源世界中 有两套比较有影响的API可供使用 一个是POI 一个是jExcelAPI 即jxl jxl功能相对POI比较弱一点 但jExcelAPI对中文支持非常好 API是纯
  • Restful API 接口设计标准以及规范

    RESTful概念 理解和评估以网络为基础的应用软件的架构设计 得到一个功能强 性能好 适宜通信的架构 REST指的是一组架构约束条件和原则 如果一个架构符合REST的约束条件和原则 我们就称它为RESTful架构 REST本身并没有创造新
  • 2021-11-15 入门前端VScode必装的常用插件, HTML+CSS常用属性速记.

    Html Css 学习 一 VSCode常用 1 VScode常用快捷键 新建文件 ctrl N 切换自动换行 alt Z 复制当前行 ctrl C ctrl V 执行在默认浏览器 alt B 设置vscode文件折叠属性 打开设置 gt
  • linux火狐无法连接网络,Ubuntu上火狐浏览器无法上网的解决方法

    网上有的方法是在浏览器中选择更新 后来找到了更加直接好用的方法 只需要几行命令就可以 1 在终端中输入sudo apt get update 如果在这一步出现错误 显示暂时不能解析域名的情况 可能是DNS服务器地址需要设置 可执行下列步骤
  • macOS上WebM转MP4文件

    目录 编辑 提出程序要求 安装Homebrew和ffmpeg的步骤 方法 原代码以下 原代码以上 注意 提出程序要求 在macOS上用Script Editor编写一个程序 使用ffmpeg命令来把WebM转换成MP4文件 说明 ffmpe
  • 纯CSS实现呼吸灯&文字&毛玻璃效果

    闲来无事 下一步在平时中应该考虑如何让页面动起来 增加视觉效果 说一说呼吸灯效果吧 我觉得可以用到 就一个brightness滤镜 用动画动起来 文字效果 在页面中系统名称处可以使用 让页面看起来更有活力一点 CSS真是今非昔比了 唉 水一
  • 基于阿里云的maven配置settings.xml

  • 解读升压电路(BOOST)与降压电路(BUCK)

    1 BUCK和BOOST电路详解 541板哥的博客 CSDN博客 buck电路和boost电路 2 升压电路 BOOST 与降压电路 BUCK FFT变换的博客 CSDN博客 buckboost升降压电路原理 3 BUCK BOOST电路原
  • C# replace替换用法

    1 在后台vs使用 content content Replace 545 666 把545替换为666 content content Replace r n 数据显示没有回车换行时 可以使用换行 2在html里使用 content co
  • 数据挖掘的之matplotlib

    数据挖掘的之matplotlib 文章目录 数据挖掘的之matplotlib 什么是Matplotlib 画二维图表的python库 2 1 3 实现一个简单的Matplotlib画图 完善原始折线图2 图像层 2 2 4 多个坐标系显示
  • web.xml 中配置元素错误提示 The content of element type “web-app“ must match “(icon?,display- name?...

    配置xml xml 文件 IDE提示错误信息如下 The content of element type web app must match icon display name description distributable cont
  • 听伯克利博士给你讲解Llama 2的技术细节

    来源 图灵人工智能 文章翻译自 Llama 2 an incredible open LLM 原文作者 NATHAN LAMBERT Meta 近日发表了 Llama 2 的论文 而来自伯克利大学的人工智能专业博士Nathan Lamber
  • 集成电路模拟版图入门-版图基础学习笔记(五)

    第四部分 版图的艺术 模拟版图和数字版图的首要目标 首先考虑的三个问题 匹配 3 1 匹配中心思想 3 2 匹配问题 3 3 如何匹配 3 4 MOS管 3 5 电阻 3 6 电容 3 7 匹配规则 寄生效应 4 1 寄生的产生 4 2 寄
  • Unity 关于Plugins放入dll在IOS端运行异常的bug

    好久没写博客了 今天被一个问题困扰了好久 网上了查不到相应的解决方案 自行解决后才觉得还是写写博客吧 说不定能帮助别人少走弯路 首先说明我的运行环境 MAC系统版本号10 13 4 Unity版本号2018 1 0 解释下当前环境的问题 首
  • iOS App上架流程

    前言 作为一名IOS开发者 把开发出来的App上传到App Store是必须的 下面就来详细介绍下具体流程 1 打开苹果开发者中心 https developer apple com 打开后点击 Member Center 如果你的电脑没有
  • vue子组件的数据处理后竟然影响了父组件的数据,导致父级的数据也同步变更了的问题解决

    文章目录 问题描述 问题解决 问题描述 需要在子组件中处理来自父组件的数据 将父级的千分位去掉 转为纯数字 const originalData 16 33 17 1 1 14 23 21 19 76 40 16 37 052 50 2 3