【前端】数据处理

1、校验是否缺少必填字段

const tableHeader = ['测站编码', '曲线名称', '启用时间', '点序号', '水位(m)', '流量(m³/s)'];function checkMissingFields(tableHeader) {const requiredFields = ['*曲线名称', '*水位(m)', '*测站编码', '*流量(m³/s)'];const missingFields = [];requiredFields.forEach(criticalField => {if (!tableHeader.includes(criticalField)) {missingFields.push(criticalField);}});if (missingFields.length > 0) {console.log('缺少以下关键字段:', missingFields.join(', '));} else {console.log('所有关键字段均存在。');}
}checkMissingFields(tableHeader);'缺少以下关键字段: *曲线名称, *水位(m), *测站编码, *流量(m³/s)'

2、验证必填*数据不能为空,再读取流格式Excel时候为空的转换为-

const excelData = [{"*曲线名称": "-","*水位(m)": "1","*流量(m³/s)": "1","*测站编码": "22","启用时间": "1","点序号": "1",},  {"*曲线名称": "-","*水位(m)": "-","*流量(m³/s)": "1","*测站编码": "22","启用时间": "1","点序号": "1",},
];let emptyFields = new Set(); //去重  遍历每个数组对象,每一列的必填数据都需要对比,不能有一个为空excelData.forEach((item) => {if (item["*曲线名称"] === "-" &&item["*水位(m)"] === "-" &&item["*流量(m³/s)"] === "-" &&item["*测站编码"] === "-") {emptyFields.add("测站编码、曲线名称、水位、流量");} else {if (item["*曲线名称"] === "-") {emptyFields.add("曲线名称");}if (item["*水位(m)"] === "-") {emptyFields.add("水位");}if (item["*流量(m³/s)"] === "-") {emptyFields.add("流量");}if (item["*测站编码"] === "-") {emptyFields.add("测站编码");}}
});if (emptyFields.size > 0) {const errorMessage =[...emptyFields].join("、") + "数据为空,请重新输入后上传";console.log(errorMessage);} else {console.log("所有字段均有值,可以上传");
}'曲线名称、水位数据为空,请重新输入后上传'

3、将数组处理成elementUi中表头的格式

const tableHeader = ['*测站编码', '*曲线名称', '启用时间', '点序号', '*水位(m)', '*流量(m³/s)']function transformTableHeader(tableHeader) {return tableHeader.map((item, index) => ({label: item,prop: `propTable${index + 1}`}));
}const a=transformTableHeader(tableHeader)
console.log(a);function processTableHeaderLabel(tableHeader) {return tableHeader.map(obj => {const label = obj.label.startsWith('*') ? obj.label.slice(1) : obj.label;return { ...obj, label };});
}
const b=processTableHeaderLabel(a); 
console.log('要等表格数据处理完再去去除*',b);[ { label: '*测站编码', prop: 'propTable1' },{ label: '*曲线名称', prop: 'propTable2' },{ label: '启用时间', prop: 'propTable3' },{ label: '点序号', prop: 'propTable4' },{ label: '*水位(m)', prop: 'propTable5' },{ label: '*流量(m³/s)', prop: 'propTable6' } ]​​​​​at ​​​​​​​​a​​​ ​quokka.js:11:1​'要等表格数据处理完再去去除*
[ { label: '测站编码', prop: 'propTable1' },{ label: '曲线名称', prop: 'propTable2' },{ label: '启用时间', prop: 'propTable3' },{ label: '点序号', prop: 'propTable4' },{ label: '水位(m)', prop: 'propTable5' },{ label: '流量(m³/s)', prop: 'propTable6' } ]

4、将数据处理成elementUi里表格需要的数据

const tableHeader = [{ label: "*测站编码", prop: "propTable1" },{ label: "*曲线名称", prop: "propTable2" },{ label: "*水位(m)", prop: "propTable3" },{ label: "*流量(m³/s)", prop: "propTable4" },{ label: "启用时间", prop: "propTable5" },{ label: "点序号", prop: "propTable6" }];const excelData = [{"*曲线名称": "-","*水位(m)": "1","*流量(m³/s)": "1","*测站编码": "22","启用时间": "1","点序号": "1",},{"*曲线名称": "-","*水位(m)": "-","*流量(m³/s)": "1","*测站编码": "22","启用时间": "1","点序号": "1",},
];function transformTableData(tableHeader, excelData) {return excelData.map((item) => {let rowData = {};Object.keys(item).forEach((value) => {const propItem = tableHeader.find((p) => p.label === value);rowData[propItem.prop] = item[value];});return { ...rowData };});
}
const a=transformTableData(tableHeader, excelData);
console.log(a);[ { propTable2: '-',propTable3: '1',propTable4: '1',propTable1: '22',propTable5: '1',propTable6: '1' },{ propTable2: '-',propTable3: '-',propTable4: '1',propTable1: '22',propTable5: '1',propTable6: '1' } ]

5、现在有下拉框,可以选取表头,并将该表头对应的列数据全部存入下拉框中

const stationCode = "propTable1";const tableData = [{propTable2: "-",propTable3: "1",propTable4: "1",propTable1: "22",propTable5: "1",propTable6: "1",},{propTable2: "-",propTable3: "-",propTable4: "1",propTable1: "22",propTable5: "1",propTable6: "1",},
];
const  arr=tableData.map(row => row[stationCode]);
console.log(arr);
[ '22', '22' ] 

补充下拉框选中时候,列的数据类型判断

let stationCode = "propTable1";
const dateTimeRegex = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/;
const tableData = [{propTable2: "-",propTable3: "1",propTable4: "1",propTable1: "19992-11-11 11:11:11",propTable5: "1",propTable6: "1",},{propTable2: "-",propTable3: "-",propTable4: "1",propTable1: "22",propTable5: "1",propTable6: "1",},
];
for (let i = 0; i < tableData.length; i++) {const row =tableData[i];const value = row[stationCode];console.log('🚀 ~ handleSelectChange ~ value:', value);// 判断值是否不是 'YYYY-MM-DD HH:mm:ss' 格式if (!dateTimeRegex.test(value)) {console.log('value不是YYYY-MM-DD HH:mm:ss格式');return}
}
//通过上面数据才赋值
// if (typeof value !== 'number' || !Number.isInteger(value)) //value不是整数

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

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

相关文章

vue项目中区域拖拽修改大小, Vue Grid Layout -️ 适用Vue.js的栅格布局系统

目录 一、安装 二、使用 三、属性介绍 GridLayout GridItem 四、事件介绍 GridLayout layoutCreated layoutBeforeMountEvent layoutMountedEvent layoutReadyEvent layoutUpdatedEvent breakpointChangedEvent GridItem moveEvent resizeEvent movedEvent re…

echarts鼠标事件

鼠标事件支持方法 ECharts 支持常规的鼠标事件类型&#xff0c;包括 ‘click’、 ‘dblclick’、 ‘mousedown’、 ‘mousemove’、 ‘mouseup’、 ‘mouseover’、 ‘mouseout’、 ‘globalout’、 ‘contextmenu’ 事件 简单实例 // 基于准备好的dom&#xff0c;初始化EChar…

加州大学圣地亚哥分校伯克利分校联合英伟达最新开源!COLMAP-Free 3D Gaussian Splatting

作者&#xff1a;石昊 | 来源&#xff1a;3DCV 在公众号「3DCV」后台&#xff0c;回复「原论文」可获取论文pdf 添加微信&#xff1a;dddvision&#xff0c;备注&#xff1a;3D高斯&#xff0c;拉你入群。文末附行业细分群 从图像序列中进行相机姿态估计和新视角合成的问题。…

论文笔记:A survey on zero knowledge range proofs and applications

https://link.springer.com/article/10.1007/s42452-019-0989-z 描述了构建零知识区间证明&#xff08;ZKRP&#xff09;的不同策略&#xff0c;例如2001年Boudot提出的方案&#xff1b;2008年Camenisch等人提出的方案&#xff1b;以及2017年提出的Bulletproofs。 Introducti…

实现Spring的Ordered接口,控制Bean的初始化优先级最高

spring的Ordered接口有什么作用? 实现Spring框架中的Ordered接口可以控制对象的初始化顺序。Ordered接口定义了一个getOrder()方法,返回一个整数值,表示对象的顺序,数值越小,优先级越高,越先被初始化。 通过实现Ordered接口,可以确保在有多个对象需要按顺序初始化时,它…

Win11系统实现adb命令向安卓子系统安装APP

Win11系统实现通过adb命令向安卓子系统安装已下载好的apk包。 要实现以上目标&#xff0c;我们需要用到一个Android SDK 的组件Android SDK Platform-Tools &#xff01;这个组件呢其实是被包含在 Android Studio中的&#xff0c;如果你对安卓开发有所了解对此应该不会陌生&…

【Unity】如何在Unity 中创建带有缩放效果的滚动视图(具有吸附效果的实现与优化)?

效果预览&#xff1a; 目录 效果预览&#xff1a; 一、引言&#xff1a; 二、问题描述 三、解决方案&#xff1a; 三、优化&#xff1a; 四、结论 一、引言&#xff1a; 在Unity开发中&#xff0c;经常需要实现滚动视图&#xff08;ScrollView&#xff09;中的内容吸附到…

leetCode 第44天 | 518. 零钱兑换 II 377. 组合总和 Ⅳ 动态规划

518. 零钱兑换 II 先物品&#xff0c;后背包容量&#xff0c;组合数&#xff1b;先背包容量&#xff0c;后物品&#xff0c;排列数 感觉先物品后背包比较容易理解。对于有多少种情况这种题目&#xff0c;递推公式为&#xff1a;dp[j] dp[j-coins[i]]。 class Solution { publ…

算法C++

枚举 1.化段为点 前缀和 eg:给一个数列&#xff0c;算x到y个数的和 #include <iostream> #include <vector> using namespace std;int main() {int n;cin>>n;vector<int> a(n);vector<int> sum(n1,0);for(int i0;i<n;i){scanf…

047-WEB攻防-PHP应用文件上传函数缺陷条件竞争二次渲染黑白名单JS绕过

047-WEB攻防-PHP应用&文件上传&函数缺陷&条件竞争&二次渲染&黑白名单&JS绕过 #知识点&#xff1a; 1、PHP-原生态-文件上传-检测后缀&黑白名单 2、PHP-原生态-文件上传-检测信息&类型内容 3、PHP-原生态-文件上传-函数缺陷&逻辑缺陷 4、PH…

Window系统部署Z-blog并结合内网穿透实现远程访问本地博客站点

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Spring Task的应用

介绍 Spring Task是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 定位&#xff1a; 定时任务框架 作用&#xff1a; 定时自动执行某段Java代码 应用场景&#xff1a; 引用卡每月还款提醒、银行贷款每月还款提醒、火车票售票系统处理未支…

有序链表的合并

已知线性表 LA 和 LB 中的数据元素按值非递减有序排列&#xff0c;现要求将 LA 和 LB 归并为一个新的线性表 LC&#xff0c; 且 LC 中的数据元素仍然按值非递减有序排列。例如&#xff0c;设LA(3,5,8,11) ,LB(2,6,8,9,11,15,20) 则LC(2,3,6,6,8,8,9,11,11,15,20) 输入格式 有…

文件的写出操作

1. 文件不存在&#xff0c;创建文件后写出方法: <1>打开文件&#xff1a;open()方法是文件不存在时创建文件 file open("D:/test.txt","w",encoding"UTF-8")<2>写出文件: file.write("please open your book") #内容写到内…

文献速递:深度学习--应用深度学习到DaTscan SPECT图像以改善帕金森病运动结果预测

文献速递&#xff1a;深度学习–应用深度学习到DaTscan SPECT图像以改善帕金森病运动结果预测 Title 题目 Improved motor outcome prediction in Parkinson’s disease applying deep learning to DaTscan SPECT images 应用深度学习到DaTscan SPECT图像以改善帕金森病运动…

unity学习(42)——创建(create)角色脚本(panel)——UserHandler(收)+CreateClick(发)——服务器收包2

1.解决上一次留下的问题&#xff1a; log和reg的时候也有session&#xff0c;输出看一下这两个session是同一个不&#xff1a; 实测结果reg log accOnline中的session都是同一个对象&#xff0c;但是getAccid时候的session就是另一个了。 测试结果&#xff0c;说明在LogicHan…

SpringCloud--Sentinel基本概念介绍

一、Sentinel 简介 Spring Cloud Sentinel 是阿里巴巴开源的面向分布式服务、多语言异构化服务架构的流量治理组件。主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 …

C#三元运算符(ternary operator)

在C#中&#xff0c;三元运算符&#xff08;ternary operator&#xff09;是一种简洁的条件表达式&#xff0c;它允许根据条件的结果选择性地返回两个表达式中的一个值。 三元运算符的语法如下&#xff1a; condition ? expression1 : expression2其中&#xff0c;condition …

Linux信号【保存-处理】

目录 前言&#xff1a; 1、再次认识信号 1.1、概念 1.2、感性理解 1.3、在内核中的表示 1.4、sigset_t 信号集 2、信号集操作函数 2.1、增删改查 2.2、sigprocmask 2.3、sigpending 3.信号的处理机制 3.1处理情况 3.2合适时机 4用户态与内核态 4.1、概念 4.2、…

【Java程序设计】【C00322】基于Springboot的高校竞赛管理系统(有论文)

基于Springboot的高校竞赛管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校竞赛管理系统&#xff0c;本系统有管理员、老师、专家以及用户四种角色&#xff1b; 管理员&#xff1a;首页、个人中心、管…