vue项目开发常用工具类

防止重复造轮子,将经常用的函数进行记录,也参考网上的并一起进行记录,后续会持续更新常用到的函数工具类方法😉😉

/** 验证手机号是否合格* true--说明合格*/
export function isPhone(phoneStr) {let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;if (!myreg.test(phoneStr)) {return false;} else {return true;}
}/** 验证身份证号是否合格* true--说明合格*/
export function isIdCard(idCardStr) {let idcardReg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;if (idcardReg.test(idCardStr)) {return true;} else {return false;}
}/*** 验证车牌号是否合格* true--说明合格*/
export function isVehicleNumber(vehicleNumber) {let xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;let creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;if (vehicleNumber.length == 7) {return creg.test(vehicleNumber);} else if (vehicleNumber.length == 8) {return xreg.test(vehicleNumber);} else {return false;}
}/** 验证字符串是否为空(也不能为纯空格)* true--说明为空, false--说明不为空*/
export function isEmptyString(string) {if (string == undefined ||typeof string == 'undefined' ||!string ||string == null ||string == '' ||/^\s+$/gi.test(string)) {return true;} else {return false;}
}/** 生日转为年龄(精确到月份)*/
export function birsdayToAge(birsday) {let aDate = new Date();let thisYear = aDate.getFullYear();let bDate = new Date(birsday);let brith = bDate.getFullYear();let age = thisYear - brith;if (aDate.getMonth() == bDate.getMonth()) {if (aDate.getDate() < bDate.getDate()) {age = age - 1;}} else {if (aDate.getMonth() < bDate.getMonth()) {age = age - 1;}}return age;
}/*** 判断数据类型* @param {any} val - 基本类型数据或者引用类型数据* @return {string} - 可能返回的结果有,均为小写字符串* number、boolean、string、null、undefined、array、object、function等*/
export function getType(val){//判断数据是 null 和 undefined 的情况if (val == null) {return val + "";}return typeof(val) === "object" ?Object.prototype.toString.call(val).slice(8, -1).toLowerCase() :typeof(val);
}/** 验证是否为数字*/
export function isNumber(n) {return !isNaN(parseFloat(n)) && isFinite(n);
}/** 是否为数组*/
export function isArray(obj) {return Object.prototype.toString.call(obj) === '[object Array]';
}/** 是否空数组*/
export function isArrayEmpty(val) {if (val && val instanceof Array && val.length > 0) {return false;} else {return true;}
}/** 获取url参数字符串* 没有返回null*/
export function getQueryString(name) {let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');let r = window.location.search.substr(1).match(reg);if (r != null) {return unescape(r[2]);}return null;
}/** 递归深拷贝*/
export function deepCopy(obj) {let result = Array.isArray(obj) ? [] : {};for (let key in obj) {if (obj.hasOwnProperty(key)) {if (typeof obj[key] === 'object' && obj[key] !== null) {result[key] = deepCopy(obj[key]);} else {result[key] = obj[key];}}}return result;
}/*** 去除参数空数据(用于向后台传递参数的时候)* @param {Object} obj [参数对象]*/
export function filterEmptyData(obj) {for (let prop in obj) {obj[prop] === '' ? delete obj[prop] : obj[prop];}return obj;
}/*** @desc  函数防抖,用于将多次执行变为最后一次执行* @param {function} func - 需要使用函数防抖的被执行的函数。必传* @param {Number} wait - 多少毫秒之内触发,只执行第一次,默认1000ms。可以不传*/
export function debounce(fn, delay) {delay = delay || 1000; //默认1s后执行let timer = null;return function () {let context = this;let arg = arguments;if (timer) {clearTimeout(timer);}timer = setTimeout(() => {fn.apply(context, arg);}, delay);};
}/*** 节流函数, 用于将多次执行变为每隔一段时间执行* @param fn 事件触发的操作* @param delay 间隔多少毫秒需要触发一次事件*/
export function throttle2(fn, delay) {let timer = null;return function () {let context = this;let args = arguments;if (!timer) {timer = setTimeout(function () {fn.apply(context, args);clearTimeout(timer);}, delay);}};
}// 数字四舍五入(保留n位小数)export function round (number, n) {n = n ? parseInt(n) : 0if (n <= 0) return Math.round(number)number = Math.round(number * Math.pow(10, n)) / Math.pow(10, n)return number
}/***数字金额转文字  函数** @export* @param {*} money* @returns*/
export function convertCurrency(money) {//汉字的数字var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');//基本单位var cnIntRadice = new Array('', '拾', '佰', '仟');//对应整数部分扩展单位var cnIntUnits = new Array('', '万', '亿', '兆');//对应小数部分单位var cnDecUnits = new Array('角', '分', '毫', '厘');//整数金额时后面跟的字符var cnInteger = '整';//整型完以后的单位var cnIntLast = '元';//最大处理的数字var maxNum = 999999999999999.9999;//金额整数部分var integerNum;//金额小数部分var decimalNum;//输出的中文金额字符串var chineseStr = '';//分离金额后用的数组,预定义var parts;if (money == '') {return '';}money = parseFloat(money);if (money >= maxNum) {//超出最大处理数字return '';}if (money == 0) {chineseStr = cnNums[0] + cnIntLast + cnInteger;return chineseStr;}//转换为字符串money = money.toString();if (money.indexOf('.') == -1) {integerNum = money;decimalNum = '';} else {parts = money.split('.');integerNum = parts[0];decimalNum = parts[1].substr(0, 4);}//获取整型部分转换if (parseInt(integerNum, 10) > 0) {var zeroCount = 0;var IntLen = integerNum.length;for (var i = 0; i < IntLen; i++) {var n = integerNum.substr(i, 1);var p = IntLen - i - 1;var q = p / 4;var m = p % 4;if (n == '0') {zeroCount++;} else {if (zeroCount > 0) {chineseStr += cnNums[0];}//归零zeroCount = 0;chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];}if (m == 0 && zeroCount < 4) {chineseStr += cnIntUnits[q];}}chineseStr += cnIntLast;}//小数部分if (decimalNum != '') {var decLen = decimalNum.length;for (var i = 0; i < decLen; i++) {var n = decimalNum.substr(i, 1);if (n != '0') {chineseStr += cnNums[Number(n)] + cnDecUnits[i];}}}if (chineseStr == '') {chineseStr += cnNums[0] + cnIntLast + cnInteger;} else if (decimalNum == '') {chineseStr += cnInteger;}return chineseStr;
}/**时间增加或减少几天* date  当前日期 例: 2020-06-10* days  增加的天数 例: 30* return 增加后的天数*/
export function addDate(date, days) {var d = new Date(date);d.setDate(d.getDate() + days);var month = d.getMonth() + 1;var day = d.getDate();if (month < 10) {month = "0" + month;}if (day < 10) {day = "0" + day;}var val = d.getFullYear() + "-" + month + "-" + day;return val;
}/**数字每千位加逗号* */
export function commafy(num) {return num && num.toString().replace(/\d+/, function(s){return s.replace(/(\d)(?=(\d{3})+$)/g, '$1,')})
}/**数字补位* numberPad用于按照位数补0,默认为2*/
export function numberPad(source, length = 2) {let pre = ''const negative = source < 0const string = String(Math.abs(source))if (string.length < length) {pre = (new Array(length - string.length + 1)).join('0')}return (negative ? '-' : '') + pre + string
}/**随机数**/
export function numberRandom (min, max) {return Math.floor(Math.random() * (max - min + 1) + min)
}
/**手机号码中间4位隐藏花号(*)显示**/
export function hideMobile(mobile) {return mobile.replace(/^(\d{3})\d{4}(\d{4})$/, "$1****$2")
}/*** 去除字符串空格* @param str 要处理的字符串* @param type 1:所有空格 2:前后空格 3:前空格 4:后空格*/
export function strTrim(str, type) {switch (type) {case 1:return str.replace(/\s+/g, "");case 2:return str.replace(/(^\s*)|(\s*$)/g, "");case 3:return str.replace(/(^\s*)/g, "");case 4:return str.replace(/(\s*$)/g, "");default:return str;}},/*** 字母大小写切换* @param str 要处理的字符串* @param type 1:首字母大写 2:首页母小写 3:大小写转换 4:全部大写 5:全部小写*/
export function strChangeCase(str, type) {function ToggleCase(str) {var itemText = ""str.split("").forEach(function (item) {if (/^([a-z]+)/.test(item)) {itemText += item.toUpperCase();} else if (/^([A-Z]+)/.test(item)) {itemText += item.toLowerCase();} else {itemText += item;}});return itemText;}switch (type) {case 1:return str.replace(/^(\w)(\w+)/, function (v, v1, v2) {return v1.toUpperCase() + v2.toLowerCase();});case 2:return str.replace(/^(\w)(\w+)/, function (v, v1, v2) {return v1.toLowerCase() + v2.toUpperCase();});case 3:return ToggleCase(str);case 4:return str.toUpperCase();case 5:return str.toLowerCase();default:return str;}},/*** 检测密码强度* @param str 字符串* @returns 1:密码弱 2:密码中等 3:密码强 4:密码很强*/export function checkPwd(str) {var nowLv = 0;if (str.length < 6) {return nowLv};if (/[0-9]/.test(str)) {nowLv++};if (/[a-z]/.test(str)) {nowLv++};if (/[A-Z]/.test(str)) {nowLv++};return nowLv;},/*** 返回指定某个区间的一个数字(可以不传参,不传就返回0-255之间的数;可以只传一个,返回0到传入的这个数字之间的某个值)* @param n1 开始区间 例:5* @param n2 结束区间 例:10* @returns 返回这个区间的某个随机值*/export const randomNumber(n1, n2) {if (arguments.length === 2) {return Math.round(n1 + Math.random() * (n2 - n1));} else if (arguments.length === 1) {return Math.round(Math.random() * n1)} else {return Math.round(Math.random() * 255)}},/*** 随机产生某个颜色* @returns {String} 颜色 例:rgb(250,82,49)*///randomNumber是上面定义的函数
export function randomColor() {return 'rgb(' + this.randomNumber(255) + ',' this.randomNumber(255) + ',' + this.randomNumber(255) + ')';},/*** 简单数组排序,针对数字数组* @param type 1:降序,0:升序*/
export function sortArr(arr, type) {if (type == 1) {//降序arr.sort(function (a, b) {return b - a;});} else {arr.sort(function (a, b) {return a - b;});}return arr;},/*** 浏览器全屏*/export function reqFullScreen(){if (document.documentElement.requestFullScreen) {document.documentElement.requestFullScreen();} else if (document.documentElement.webkitRequestFullScreen) {document.documentElement.webkitRequestFullScreen();} else if (document.documentElement.mozRequestFullScreen) {document.documentElement.mozRequestFullScreen();}};/*** 浏览器退出全屏*/export function exitFullScreen = () => {if (document.documentElement.requestFullScreen) {document.exitFullScreen();} else if (document.documentElement.webkitRequestFullScreen) {document.webkitCancelFullScreen();} else if (document.documentElement.mozRequestFullScreen) {document.mozCancelFullScreen();}};/** 加密 */export function encrypt (word) {let encrypted = CryptoJS.AES.encrypt(word.toString(), key,//  AES加密{iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7   // 后台用的是pad.Pkcs5,前台对应为Pkcs7})return encrypted.toString()},/** 解密 */export function decrypt (word) {let decrypted = CryptoJS.AES.decrypt(word, key,//  AES解密{iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7})return CryptoJS.enc.Utf8.stringify(decrypted)},/** 参数加密 */export function paramsEncrypt (params = {}) {for (let prop in params) {if (params[prop] != null) {params[prop] = this.encrypt(params[prop])}}},/** 文件下载*/export function downLoad(way,url,name,type){var token = sessionStorage.getItem("account.token") || "";var xhr = new XMLHttpRequest();xhr.open(way, url, true);xhr.responseType = "blob";xhr.setRequestHeader("Authorization", "Bearer " + token);xhr.onload = function () {if (this.status === 200) {var blob = this.response;var reader = new FileReader();reader.readAsDataURL(blob); // 转换为base64,可以直接放入a标签hrefreader.onload = function (e) {var a = document.createElement("a"); // 转换完成,创建一个a标签用于下载a.download = name + type;a.href = e.target.result;$("body").append(a); // 修复firefox中无法触发clicka.click();$(a).remove();};}};xhr.send(); // 发送ajax请求}//id转名称findOrgIdToName(arr,orgid,_name){arr.forEach(item => {if (item.orgid == orgid) {_name = item.orgname;} else{if (item.children && item.children.length) {const p = this.findOrgIdToName(item.children, orgid);if(p) _name = p;}}});return _name;},

在这里插入图片描述在这里插入图片描述在这里插入图片描述
像判空、字符串字段校验之类的经常用到,需要用的可以引到项目中进行使用~持续更新

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

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

相关文章

艺人商务代言:避雷策略与成功合作之道

避免在艺人商务代言中遇到风险&#xff0c;是每个企业和艺人都应该高度重视的问题。代言活动是一种有效的市场营销手段&#xff0c;可以为企业带来广泛的曝光和销售增长&#xff0c;同时也能让艺人获得额外的收入和更高的知名度。然而&#xff0c;不慎选择错误的代言合作可能带…

Vue3--->组合式API与Pinia

目录 使用create-vue搭建 1、使用create-vue创建项目 2、项目目录和关键文件 组合式API 1、组合式API - setup选项 2、组合式API - reactive和ref函数 3、组合式API - computed 4、组合式API - watch 1、基础使用 - 侦听单个数据 2、基础使用 - 侦听多个数据 3、immediate&…

基于 FFmpeg 的跨平台视频播放器简明教程(七):使用多线程解码视频和音频

系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程&#xff08;一&#xff09;&#xff1a;FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程&#xff08;二&#xff09;&#xff1a;基础知识和解封装&#xff08;demux&#xff09;基于 FFmpeg 的跨平台视频…

leetcode每日一题Day2——344. 反转字符串

✨博主&#xff1a;命运之光 &#x1f984;专栏&#xff1a;算法修炼之练气篇&#xff08;C\C版&#xff09; &#x1f353;专栏&#xff1a;算法修炼之筑基篇&#xff08;C\C版&#xff09; &#x1f433;专栏&#xff1a;算法修炼之练气篇&#xff08;Python版&#xff09; …

【面试题】与通义千问的芯片前端设计模拟面试归纳

这里是尼德兰的喵芯片设计相关文章,欢迎您的访问! 如果文章对您有所帮助,期待您的点赞收藏! 让我们一起为芯片前端全栈工程师而努力! 前言 两个小时,与chatGPT进行了一场数字IC前端设计岗的面试_尼德兰的喵的博客-CSDN博客 和GPT-3.5的回答可以对比品尝,味道更好。 模…

Jenkins pipeline 脚本语言学习支持

1 引言 Groovy是用于Java虚拟机的一种敏捷的动态语言&#xff0c;它是一种成熟的面向对象编程语言&#xff0c;既可以用于面向对象编程&#xff0c;又可以用作纯粹的脚本语言。 使用该种语言不必编写过多的代码&#xff0c;同时又具有闭包和动态语言中的其他特性。 Groovy是一…

用Python写了一个下载网站所有内容的软件,可见即可下

目录标题 前言环境介绍:代码实战获取数据获取视频采集弹幕采集评论 GUI部分尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 今天我们分享一个用Python写下载视频弹幕评论的代码。 顺便把这些写成GUI&#xff0c;把这些功能放到一起让朋友用起来更方便~ 环境介绍: py…

tinkerCAD案例:29. 摇头娃娃

Research Your Favorite Bobblehead 摇头娃娃 Project Overview: 项目概况&#xff1a; Design and create your favorite Minecraft 3D bobble head. All you need is a computer, 3D printer, spring and your creativity to your favorite Minecraft character in the for…

dreamStudio试用教程【AI绘画】

文章目录 dreamStudio 简介打开官网如下邮箱登录即可切换随机提示词新用户的试用次数目前只有25张图像&#x1f4d9; 预祝各位 前途似锦、可摘星辰 dreamStudio 简介 https://github.com/Stability-AI/StableStudio StabilityAI在官网上重磅宣布——旗下的文生图应用DreamStu…

智能提词器有哪些?了解一下这款提词工具

智能提词器有哪些&#xff1f;使用智能提词器可以帮助你更好地准备和交付演讲、报告或其他提词场合。它可以提高你的效率&#xff0c;节省你的时间&#xff0c;并让你更加自信地与听众沟通。另外&#xff0c;智能提词器还可以提供一些有用的功能&#xff0c;如语音识别、智能建…

Spring Boot实践三 --数据库

一&#xff0c;使用JdbcTemplate访问MySQL数据库 1&#xff0c;确认本地已正确安装mysql 按【winr】快捷键打开运行&#xff1b;输入services.msc&#xff0c;点击【确定】&#xff1b;在打开的服务列表中查找mysql服务&#xff0c;如果没有mysql服务&#xff0c;说明本机没有…

迁移学习、微调、计算机视觉理论(第十一次组会ppt)

@TOC 数据增广 迁移学习 微调 目标检测和边界框 区域卷积神经网络R—CNN

IDEA开启并配置services窗口

前言&#xff1a; 一般一个spring cloud项目中大大小小存在几个十几个module编写具体的微服务项目。此时&#xff0c;如果要调试测需要依次启动各个项目比较麻烦。 方法一&#xff1a; 默认第一次打开项目的时候&#xff0c;idea会提示是否增加这个选项卡&#xff0c;如果你没…

《golang设计模式》第一部分·创建型模式-03-建造者模式(Builder)

文章目录 1. 概念1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概念 1.1 角色 Builder&#xff08;抽象建造者&#xff09;&#xff1a;给出一个抽象接口&#xff0c;以规范产品对象的各个组成成分的建造。ConcreteBuilder&#xff08;具体建造者&#xff09;&a…

NOsql之MongoDB入门分享

目录 一、MongoDB简介 1、概念理解 2、yum安装部署 3、二进制安装部署 4、配置文件解析 二、MongoDB基本管理 1、登录操作 2、管理命令 3、用户管理 一、MongoDB简介 1、概念理解 关系型数据库&#xff08;RDBMS:Relational Database Management System) MySql、Ora…

STM32-风速传感器(ADC)

目录 0 说明 1 传感器介绍 2 代码说明 2.1 ADC.c 2.2 adc.h 2.3 main.c 0 说明 本篇文章主要是说明怎么使用STM32单片机读取风速传感器采集到的数据&#xff0c;读取方式是ADC&#xff0c;并且附带着STM32所需要的全部代码&#xff0c;所使用的风速传感器如下图所示。 附&am…

IDEA的基础使用——【初识IDEA】

IDEA的基础使用——【初识IDEA】 文章目录 IDEA简介前言官网 IDEA的下载与安装选择下载路径勾选自己需要的其余按默认选项进行即可 目录简介安装目录简介 运行Hello WorldIDEA快捷键常用模板模板一&#xff1a;psvm&#xff08;main&#xff09;模板二&#xff1a;模板三&#…

PHP-Mysql好运图书管理系统--【白嫖项目】

强撸项目系列总目录在000集 PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 首页必要的项目知识ThinkPHP的MVCThinkTemplateThinkPHP 6和ThinkPHP 5 phpStudy 设置导数据库前台展示页面后台的管理界面数据库表结构项目目录如图&#xff1a;代码部分&a…

【c语言初级】c++基础

文章目录 1. C关键字2. 命名空间2.1 命名空间定义2.2 命名空间使用 3. C输入&输出4. 缺省参数4.1 缺省参数概念4.2 缺省参数分类 5. 函数重载5.2 C函数重载的原理--名字修饰采用C语言编译器编译后结果 1. C关键字 C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想…

android studio 找不到符号类 Canvas 或者 错误: 程序包java.awt不存在

android studio开发提示 解决办法是&#xff1a; import android.graphics.Canvas; import android.graphics.Color; 而不是 //import java.awt.Canvas; //import java.awt.Color;