只记录一些常用的前端代码片段以及本人平时工作实践的整理记录,方便提供思路和快速预览,分享给对知识充满渴望的有缘人!
数据分组
学习封装一个通用分组函数,对公共功能的提取有更多的理解与思考。
代码示例:
1 | const people = [ |
在原型上添加下拉选项选择弹窗
通过在原型上定义一个全局方法使其在每个 Vue 的实例中可用,代码示例如下:
1 | /** |
在原型上添加全局方法控制域后事件
在平台工程Plugins.js文件中新增一个定制化的全局方法,方便对Vue组件栏位进行控制。代码示例如下:
1 | /** |
合并表格列
有些需求是针对表格中相同行数据的某些列进行合并展示,根据表格中可绑定的objectSpanMethod函数进行处理,仅用于参考:
1 | // 合并行或列的函数 |
数组排序
根据获取的数组内容不同,若明确其中的某个字符串是有规律的,我们可以通过截取其中的字符串进行处理排序问题:
1 | const data = [ |
还可以通过正则表达式判断是否转为数字,数字的放在一起排序,非纯数字的放一起进行字母和数字比较排序:
1 | const data = [ |
代码解释:
这段代码首先使用 filter() 方法将数据分为两组:数字和非纯数字。
数字组使用正则表达式 /^\d+$/ 匹配。该正则表达式匹配一个或多个数字。
非纯数字组使用正则表达式的反向匹配 !match。
然后,代码使用 sort() 方法对数字组进行排序。sort() 方法接受一个比较函数作为参数。比较函数使用减法运算符 (-) 比较两个数字的大小。
最后,代码使用 sort() 方法对非纯数字组进行排序。sort() 方法使用 localeCompare() 方法比较两个字符串的大小。localeCompare() 方法考虑了语言环境和区域设置。
写入JsonArray对象字符串
有些时候需要给后端写入的文件,里面的某个映射字段必须要指定的JsonArray对象字符串,各元素为JsonObject对象,这时候可通过如下代码进行处理:
1 | const yyrzdjb = { |
代码解释:
- for(const key in this.verificationInfo):这行代码开始了一个 for…in 循环。for…in 循环用于遍历对象的可枚举属性。在这里,key 是一个变量,用于存储每次迭代中对象的属性名。
- Object.hasOwnProperty.call(this.verificationInfo, key):这一行通过 Object 对象的 hasOwnProperty 方法来检查当前迭代的属性是否为对象自身的属性,而不是继承来的属性。这么做是为了确保只遍历对象自身的属性,而不包括从原型链继承的属性。call() 方法的作用是调用 hasOwnProperty 方法,并将当前对象 (this.verificationInfo) 以及当前属性名 (key) 作为参数传递给 hasOwnProperty 方法。
- yyrzdjb.verificationInfo.push(this.verificationInfo[key]):如果属性是对象自身的属性,那么就将该属性的值(通过 this.verificationInfo[key] 获取)添加到另一个对象 yyrzdjb 的 verificationInfo 属性中。这假定了 yyrzdjb 对象在代码的上下文中已经被定义,并且拥有一个名为 verificationInfo 的数组属性。
- 因此,这段代码的作用是将 this.verificationInfo 对象中的所有自身属性的值都复制到另一个对象 yyrzdjb 的 verificationInfo 数组中。
JSON字符串的处理和排序
有些时候从后端服务获取返回的数据报文格式为:
1 | "{"rwxh":"1","jdmc":''录入审核","jddm":''1110","shyj":"提交账户初审子务","shsj":"2024-03-04 09:17:29","userid":"0005001}, |
由于后台的数据是根据不同的子流程任务产生后累计返回的报文信息,此时的业务需求是需要将这些数据加工处理好之后,按最新的一条意见内容进行回显界面,可用下面代码进行实现:
1 | // 处理后台的任务流程意见信息 |
循环的使用
理由:forEach 不支持使用 break 或 return 语句中断循环。for of 支持使用 break 或 return 语句中断循环。
由于JS的循环写法很多,每个同事对于循环的使用习惯都不一样,一些前同事的代码逻辑中很喜欢使用ForEach,写起来确实方便,但拓展性不太强,比如从返回的数据中需要进行筛选,不满足条件的直接中断循环,ForEach这方面就略逊一筹,因为从后端服务拿过来的数据无法预测的,且需求是随时可变的,为了可拓展,可以改成for of循环:
1 | const AuditOpinion =this.importMap.AuditOpinion |
根据条件筛选获取到的信息,然后再进行模糊查询
有时候查询服务得到的数据结构总是不统一的,而后端又不想做数据格式处理,这时需要前端根据返回的数据结构,转换成想要的结构后再使用。因为会涉及到多个地方需要使用,所以需要写一个通用的公共函数进行处理后返回。可以新建一个专门存放公共方法的js文件,方便后面在Vue文件中直接引入调用。
1 | /** |
去重处理
有时候后端服务查询会有返回重复的数据,这时候前端可以先进行去重处理,再进行展示。
1 | methods:{ |
转码处理
有时候后端接口只返回码值,并没有中文描述,并且下拉选项是需要动态查询服务进行加载,因此调用服务查询回来时,还需进行转码处理进行展示。
1 | methods: { |
关于正则表达式
在公司中需要封装一些公共方法,记录一下踩过的坑。由于项目ESLint提交时检查不能使用new的写法,所以改成了字面量的写法,结果测试的时候总是校验不到,原因就是字面量写法中不需要进行转义,使用\就无法正确识别,而new RegExp的时候需要进行转义,这个锅甩给细节啦!
1 | /** |
初始化加载表格详情画面
1 | methods:{ |
实现自由拖拽效果
1.创建Demo.html文件
示例代码:
1 | <link rel="stylesheet" href="static/css/style.css" type="text/css" media="all" /> |
2.新建style.css样式
1 | /* 自由拖拽样式 */ |
调用后端服务简单例子
1.新建一个Serive.js文件
示例代码:
1 | import { requset} from './common/requset' // 引入已封装好的ajax服务js文件 |
2.在Demo.Vue文件中调用该方法
1 | import { getDepositSubcategory } from './serice' // 引入写好的服务文件 |