前言

在vue+element项目中有设计到到表格中修改数据需求,虽然采用弹窗的方式,在表单中进行数据修改比较常见,而且可以修改更多字段验证。但少数情况下也可以做成直接在表格上编辑。如果数据量大的时候,就需要判断哪些记录做了修改,把修改的数据传给后端。
判断的方式可以在字段上加修改标识证明这条数据被修改了。另一种就是备份一份数据,最后两个数据做比较。看具体的业务场景可以选择不同的方式。

业务场景

这里我最后判断两份数据是否一样,筛选出修改过的传给后端。
因为业务场景中有需要涉及表格的行拖动,就是拖动行来修改优先级。在tableData上表现的是记录的顺序变了。所以考虑到其他原因我选择提交前比较两份数据的差异。

代码实现

这有两份数据。t2是原本后端传来的数据。先做一个深拷贝存起来。
t1是修改过的数据,包括了顺序和值的修改。
我要做的是比较两个数据是不是修改了值和顺序,并返回修改过的记录。并且将优先级的值修改。

vart1 = [{yxj: 1, // 优先级sfqy: '001 ',}, {yxj: 2,sfqy: '002 ',}, {yxj: 4,sfqy: '004 ',}, {yxj: 3,sfqy: '003',}];var t2 = [{yxj: 1, // 优先级sfqy: '001 ',}, {yxj: 2,sfqy: '002 ',}, {yxj: 3,sfqy: '003',}, {yxj: 4,sfqy: '004 ',}]

下代码中就用了两层遍历,进行比较。

function compareTableData({ data, originData, isUseStrict, diffFn }) {var changedRows = [];data.map((e, i) => {var changedState = {state: false};for (const k in e) {if (isUseStrict && Object.hasOwnProperty.call(e, k) && originData[i][k] !== e[k]) {changedState.state = truediffFn && diffFn(e, originData[i])break;}if (!isUseStrict && Object.hasOwnProperty.call(e, k) && originData[i][k] != e[k]) {changedState.state = truediffFn && diffFn(e, originData[i])break;}};if (changedState.state) {changedRows.push(e)}})return changedRows;}

示例和结果

在diffFn(如果出现不同的记录时执行)中交换了两个的优先级字段。
这样封装在于可以用于在提交之前做一些操作。
将不变的部分和可变的部分分离。使其适应更多需求。

 console.log(compareTableData({data: t1, originData: t2, diffFn: (r1, r2) => {r1['yxj'] ^= r2['yxj']r2['yxj'] ^= r1['yxj']r1['yxj'] ^= r2['yxj']}}))// 结果
[{"yxj": 3,"sfqy": "004 "},{"yxj": 4,"sfqy": "003"}
]

表格中编辑后进行数据比较的方法介绍-比较两套数据相关推荐

  1. Word文档粘贴的表格中文字有淡灰色背景的去除方法

    直接从excel粘贴过来的表格 特征: 无论怎么改字符的底色还是边框底纹都无法去除: 更改字符底纹,该底纹也没有变化: 更改各种格式样式都无法消除: 各种格式刷都不管用. 光标移到别处不会显示灰色背景 ...

  2. 教你在CAD中编辑标注尺寸界线的倾斜角的方法

    在CAD中,对于完成的标注,还可以使用"编辑标注"命令对尺寸文字的角度.尺寸界线的倾斜角进行修改,接下来就以一个图形为例为大家介绍一下CAD中编辑标注尺寸界线的倾斜角的方法! 打开 ...

  3. python可以实现哪些功能_Python中实现机器学习功能的四种方法介绍

    本篇文章给大家带来的内容是关于Python中实现机器学习功能的四种方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在本文中,我们将介绍从数据集中选择要素的不同方法; 并使用S ...

  4. mysql查看用户名_Mysql创建数据表的方法介绍(附示例)

    本篇文章给大家带来的内容是关于Mysql创建数据表的方法介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 数据表是数据库最重要的组成部分之一,是其他对象的基础.如果我们的 ...

  5. mysql创建数据表示例_Mysql创建数据表的方法介绍(附示例)

    本篇文章给大家带来的内容是关于Mysql创建数据表的方法介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 数据表是数据库最重要的组成部分之一,是其他对象的基础.如果我们的 ...

  6. java 获取键盘点击_Java中获取键盘输入值的三种方法介绍

    程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这 ...

  7. 表格中复制后出现空格_软件应用在Excel表格中怎样批量删除空格?

    在日常办公中对于Excel的使用有没有全部掌握呢?怎样快速整理表格中的数据呢?这些都是职场必备技能,了解更多的Excel知识可以让你在数据管理,表格管理中游刃有余.下面为大家分享一些经常使用的Exce ...

  8. Element—UI 表格中换页后序号不变的问题

    问题情况:在表格中做出了分页功能后发现分页后的序号还是从1开始 解决方法: <el-table-columnlabel="序号"type="index"w ...

  9. 行进中换轮胎——万字长文解析美团和大众点评两大数据平台是怎么融合的

    点击上方"公众号"可以订阅哦 本文根据作者在2017年ArchSummit的分享记录整理而成. 背景 互联网格局复杂多变,大规模的企业合并重组不时发生.原来完全独立甚至相互竞争的两 ...

最新文章

  1. 切版网上线,启用qieban.cn
  2. 有了这个科研思路,高水平SCI就在手边!
  3. 搜java题的公众号_java搜题公众号
  4. 安全设置Windows组策略 有效阻止黑客
  5. SAP云平台和SAP传统Netweaver系统互联的技术方式
  6. ASP.NET MVC Caching with OutputCache
  7. 静态页中利用AJAX.NET实现无刷新页面
  8. Vue引入百度地图API,添加点击地图拾取坐标并且标记和地址搜索功能
  9. 模型--vgg16.npy下载
  10. 多图详解缓冲区溢出问题
  11. Docker 拷贝文件到容器里面
  12. 记录css实现边框渐变色
  13. 短跑运动员求一个记时小程序
  14. 戴尔台式计算机怎么拆卸两块侧板,高效易用 戴尔OptiPlex 7050商用台式机评测
  15. python中矩阵的表示方法_在python中创建数字的二进制表示形式的矩阵 - python
  16. Java:Excel写入“合并单元格“
  17. 千牛客服面板插件开发
  18. 获取1688app上原数据 API
  19. 关于新三板的股份锁定问题
  20. 我们需要什么?——IT公司面试官经验谈

热门文章

  1. pci168c,1c无线网卡如何在64位Solaris系统上运用
  2. 宁夏最新建筑施工电工(建筑特种作业)机考题库及建筑电工模拟试题
  3. linux如何运行.bin文件
  4. 名编辑电子杂志大师教程 | 微杂志制作并在微信上发布电子杂志
  5. 中国电信2015年的三张底牌
  6. SSH struts2漏洞升级2.5.30
  7. 上海迪士尼之旅(附攻略)
  8. Web前端:HTML标签——Visual Studio Code
  9. 夏季工作如何提效 联想M7615DNA了解一下
  10. 高校课堂机器人工程方向教学设计不足与工作反思