qnyutils🎃
介绍
前端项目开发常用js工具类,包括手机号码、身份证验证、中文校验、获取日期和根据日期格式获取日期或者转换日期格式、对象数组根据key分组、邮箱格式校验、获取历史时间,时间差,数组去重,多个对象数组去重等工具方法,减少多余包引用,增加工具类复用性,提高开发效率。
软件架构
本工具库是基于纯JavaScript开发的,后续会扩展支持typescript。
安装教程
1、npm安装
$ npm i qnyutils -D
2、配置使用
全部注入:在vue2项目中入口文件导入依赖并注册全局
import Vue from "vue";
import Qnyutils from "qnyutils";
Vue.prototype.$Qnyutils = window.Qnyutils = Qnyutils;
按需引入:比如需要时间工具和手机校验工具
import { getFormatTime, validateFormatPhone } from "qnyutils";
console.log(getFormatTime(), validateFormatPhone('123456'))
js/template 中基本使用案例:
this.$Qnyutils.chineseCheck('222')
$Qnyutils.chineseCheck('222')
更多工具类访问:## 目前集成的方法使用文档
使用说明
- 工具目前仅支持vue2.0或者vue3.0+js模式的npm安装依赖的项目
- Gitee 官方使用手册 https://gitee.com/qiuaiyun/qiu-tool
参与贡献
本套工具库解释权归布依前端所有,盗版必究
1、贡献者:布依前端
参与贡献:
QQ:1766226354
布依前端工具库说明
[TOC]
手机号校验
校验手机号格式是否正确,正确返回true,错误返回false
options: [string]
this.$Qnyutils.validateFormatPhone(options)
this.$Qnyutils.validateFormatPhone('12345678942')
中文校验
校验输入字符串是否是纯中文,正确返回true,错误返回false
options: [string]
this.$Qnyutils.chineseCheck(options)
this.$Qnyutils.chineseCheck('12345678942')
获取日期和日期格式转化
支持获取当前日期和传入日期格式化
支持格式:YYYY、YYYY-MM、YYYY-MM-DD、YYYY-MM-DD HH、YYYY-MM-DD HH:MM、YYYY-MM-DD HH:MM:SS、HH:MM:SS
用法:
this.$Qnyutils.getFormatTime(time, format)
this.$Qnyutils.getFormatTime()
this.$Qnyutils.getFormatTime(null, 'YYYY-MM-DD')
this.$Qnyutils.getFormatTime(null, 'YYYY-MM-DD HH')
this.$Qnyutils.getFormatTime(null, 'YYYY')
this.$Qnyutils.getFormatTime('2023-08-12 11:10:10', 'YYYY-MM-DD')
this.$Qnyutils.getFormatTime('2023-08-12 11:10:10', 'YYYY-MM-DD HH:MM')
this.$Qnyutils.getFormatTime('2023-08-12 11:10:10', 'HH:MM:SS')
邮箱格式校验
邮箱格式校验,正确返回true,错误返回false
options: [string]
this.$Qnyutils.validateEmail(options)
this.$Qnyutils.validateEmail('11222')
this.$Qnyutils.validateEmail('11222@qq.com')
数字+字母[6-20]格式校验
专门针对密码格式校验的方法,必须是数字+字母,且长度最小为6,最大为20
options: [string]
this.$Qnyutils.validatePassWord(options)
this.$Qnyutils.validatePassWord('11222@qq.com')
this.$Qnyutils.validatePassWord('11222qqcom')
数字类型校验
数字类型,专门针对纯数字校验,其他符合会被替换为空,返回纯数字,没有限制长度,如果输入没有中文,增返回空,否则返回字符串
options: [string]
this.$Qnyutils.validateNumber(options)
this.$Qnyutils.validateNumber('11222qqcom')
保留两位小数格式输出
保留两位小数,输入的必须是数字类型,且能为负数,返回保留两位小数的字符串
options: [string]
this.$Qnyutils.getTwoDecimal(options)
this.$Qnyutils.getTwoDecimal('11222qqcom')
this.$Qnyutils.getTwoDecimal('11222.1255')
this.$Qnyutils.getTwoDecimal('-11222.1255')
对象深度拷贝
对象深度拷贝,可以用在对象属性或者其他类型数据的备份上。
options:[object|array]
this.$Qnyutils.deepCloneObj(options)
let obj = {age:12, name: '张三'}
this.$Qnyutils.deepCloneObj(obj)
历史时间格式
历史时间格式化,主要是当前时间和历史时间对比,例如,几秒前,几天前,几分钟前*,*时间字符串例如:2021-11-29 16:05:10
options:[string]: '完整时间字符串,包括年月日时分秒'
this.$Qnyutils.getHistoryTime(options)
this.$Qnyutils.getHistoryTime('2021-11-29 16:05:10')
校验身份证是否合法
身份证合法,返回true,错误返回false
options:[string]: '身份证号'
this.$Qnyutils.validateIdent(options)
this.$Qnyutils.validateIdent('522328199609021714')
数组去重[单个数组,对象数组]
this.$Qnyutils.multDeduplication = (key, ..._arguments)
单个数组去重
const numArr = [1, 2, 5, 6, 8, 7, 6, 5, 6]
const strArr = ['a', 'a', 'b', 'c', 'd', 'f', 'd']
const arr1 = this.$Qnyutils.multDeduplication(null, numArr)
const arr2= this.$Qnyutils.multDeduplication(null, strArr)
[1, 2, 5, 6, 8, 7]
['a', 'b', 'c', 'd', 'f']
对象数组去重
单个/多个对象数组去重,需要依赖对象key进行划分,key必传参数,如果传递key为null,则无法去重,如果key值错误,程序出现警告。
const list = [
{ price: 95.00, name: '三国演义'},
{ price: 100.00, name: '西游记'},
{ price: 68.00, name: '红楼梦'},
{ price: 88.00, name: '水浒传'},
{ price: 88.00, name: '水浒传'}
]
const list2 = [
{ price: 915.00, name: '三国演义'},
{ price: 10.00, name: '西游记'},
{ price: 6.00, name: '红楼梦'},
{ price: 8.00, name: '水浒传'},
{ price: 88.00, name: '水浒传'}
]
const arr = this.$Qnyutils.multDeduplication('price', list, list2)
[
{
"price": 95,
"name": "三国演义"
},
{
"price": 100,
"name": "西游记"
},
{
"price": 68,
"name": "红楼梦"
},
{
"price": 88,
"name": "水浒传"
},
{
"price": 915,
"name": "三国演义"
},
{
"price": 10,
"name": "西游记"
},
{
"price": 6,
"name": "红楼梦"
},
{
"price": 8,
"name": "水浒传"
}
]
计算时间区间差值
计算时间区间差值,返回相差天数、小时和分钟
用法
this.$Qnyutils.calcDateDifference (startTime, endTime)
const value = this.$Qnyutils.calcDateDifference ('2023-08-12 11:10:10', '2023-08-14 20:50:10')
console.log(value)
{
"day": 2,
"hours": 9.67,
"timeStr": "2天9.67时40分钟",
"minutes": 40
}
对象数组分组
针对对象数组分组,回显分组后的数组,可以根据配置属性进行分组。
const storehouse = [
{ name: "asparagus", type: "vegetables", quantity: 5 },
{ name: "bananas", type: "fruit", quantity: 0 },
{ name: "goat", type: "meat", quantity: 23 },
{ name: "cherries", type: "fruit", quantity: 5 },
{ name: "fish", type: "meat", quantity: 22 },
];
const list = this.$Qnyutils.groupByKey(storehouse, ({ type }) => type))
console.log(list);
{
"vegetables": [
{
"name": "asparagus",
"type": "vegetables",
"quantity": 5
}
],
"fruit": [
{
"name": "bananas",
"type": "fruit",
"quantity": 0
},
{
"name": "cherries",
"type": "fruit",
"quantity": 5
}
],
"meat": [
{
"name": "goat",
"type": "meat",
"quantity": 23
},
{
"name": "fish",
"type": "meat",
"quantity": 22
}
]
}