函数库
程序员文章站
2022-06-03 18:55:16
...
// 字符串常用函数
/**
* trim 去除空格
* param1 string str 待处理字符串
* param2 number type 去除空格类型 1-所有空格 2-前后空格 3-前空格 4-后空格 默认
* return string str 处理后的字符串
*/
function trim(str, type) {
if(type && type !== 1 && type !==2 && type !==3 && type !==4) return;
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;
}
}
/**
* 大小写转换
* param1 string str 待转换的字符串
* param2 number type 1-全大写 2-全小写 3-首字母大写
* return string str 处理后的字符串
*/
function turnCase(str, type) {
switch(type){
case 1:
return str.toUpperCase();
case 2:
return str.toLowerCase();
case 3:
return str[0].toUpperCase() + str.substr(1).toLowerCase();
default:
return str;
}
}
/**
* 大小写相互转换
* param string str 待转换的字符串
* return string result 处理后的字符串
*/
function parseCase(str){
let result = '';
for(let i = 0; i < str.length; i++) {
let temp = str.charAt(i);
let code = temp.charCodeAt();
if ('a' <= temp && temp <= 'z') {
temp = String.fromCharCode(code - 32);
} else if ('A' <= temp && temp <= 'Z') {
temp = String.fromCharCode(code + 32);
}
result += temp;
}
return result;
}
/**
* 密码强度判断 checkPwdStrength
* param string str 待转换的字符串
* 低于6为强度为0,字母+1,数字+1,下划线+1,特殊字符[email protected]#$%+1,最高为4
* return number lv 密码强度等级
*/
function checkPwdStrength(password) {
// 定义一个变量存储密码强度等级,默认为0
let lv = 0;
if (password.match(/[a-z]/g)) { lv++; } // 密码包含字母
if (password.match(/[0-9]/g)) { lv++; } // 密码包含数字
if (password.match(/_/g)) { lv++; } // 密码包含下划线
if (password.match(/[[email protected]#$%]/g)) { lv++; } // 密码包含[email protected]#$%任意特殊字符
if (password.length < 6) { lv = 0; }
if (lv > 4) { lv = 4; }
return lv;
}
/**
* 随机16进制颜色 hexColor
* return string str 带#号的随机16进制颜色
*/
function hexColor(){
let str = '#';
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F'];
for(let i = 0; i < 6; i++) {
let index = Number.parseInt(Math.random()*16);
str += arr[index]
}
return str;
}
/**
* 逆序输出 reverse
* param string str 源字符串
* return string result 逆序输出的字符串
*/
function reverse(str) {
let result = '';
for (let i = str.length -1; i >= 0; i--) {
result += str[i]
}
return result;
}
/**
* 短横,下划线与小驼峰的相互转化 caseFormat
* param1 string str 待转换字符串
* param2 string type '-' or '_',默认为下划线
* return string str 转换字符串
*/
function caseFormat(str, type = '_'){
if (type && type !== '-' && type !== '_') return;
let result = '';
if (str.includes(type)) {
let arr = str.split(type);
result = arr[0];
for(let i = 0; i < arr.length - 1; i++) {
result += arr[i + 1][0].toUpperCase() + arr[i + 1].substr(1).toLowerCase()
}
}else {
result = str.replace(/[A-Z]/g, function(match){
return type + match.toLowerCase();
})
}
return result;
}
/**
* 时间格式化 dateFormat 形式--“20190803 11:01:07”
* param1 Date date 待格式化的时间
* param2 number type 格式化范围 1-精确到月 2-精确到日 3-精确到分钟 4-精确到秒
* return string time 格式化后的时间
*/
function dateFormat(date, type = 4) {
if (type && type !== 1 && type !== 2 && type !== 3 && type !== 4) return;
let y = date.getFullYear().toString();
let m = (date.getMonth()+1).toString().padStart(2,'0');
let d = date.getDate().toString().padStrat(2,'0');
let h = date.getHours().toString().padStart(2, '0');
let M = date.getMinutes().toString().padStart(2, '0');
let s = date.getSeconds().toString().padStart(2, '0');
if (type === 1) return y + m;
if (type === 2) return y + m + d;
if (type === 3) return y + m + d + " " + h + ":" + M;
if (type === 4) return y + m + d + " " + h + ":" + M + ":" + s;
}
/**
* 指定位数随机码 randomCode
* param number count 随机码为数
* return string str 指定位数随机码
*/
function randomCode(){
let str = '';
let number_arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
let string_arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
let arr = [...number_arr, ...string_arr];
for(let i = 0; i < count; i++) {
let index = Number.parseInt(Math.random() * arr.length);
str += arr[index]
}
return str;
}
/**
* 防抖 preventShake
* param function fn 要进行防抖的函数
*/
const preventShake = (fn) => {
let timer = null // 创建定时器 id
retrun () => {
clearTimeout(timer) // 时间频繁触发,清除之前定时器
timer = setTimeout(() => {
// 创建新定时器,保证限定时间间隔fn只执行一次
fn()
}, 500)
}
}
/**
* 节流 throttle
* param function fn 要进行节流的函数
*/
const throttle = (fn) => {
let lock = true; // 函数外设置状态锁,默认开启
return () => {
if (!lock) retrun; // 在函数开头判断标记是否为true,不为true,则return,阻止后续程序进行
lock = false; // 改变状态锁
setTimeout(() => {
fn()
// 函数执行完,回调中改变状态锁
lock = true
}, 1000)
}
}
/**
* 深拷贝 deepCopy
* param Object obj 要进行拷贝的对象
* return Object obj 拷贝后的对象
*/
function deepCopy (obj) {
let o = obj instanceof Array ? [] : {};
for(let i in obj) {
let val = obj[i];
if (typeof val === 'object') {
o[i] = deepCopy(val);
} else {
o[i] = val;
}
}
return o;
}
/**
* 让网页变得干净 clearWebSite
* tip: 本质是将 html-body 内容隐藏并清除控制台
*/
function clearWebSite(){
document.body.setAttribute('hidden', true);
window.clear(); // 清除控制台
}