// 获取url的参数
const getUrlParams=()=>{
var q={};
location.search.replace(/([^?&=]+)=([^&]+)/g,(_,k,v)=>q[k]=unescape(v));
return q;
}
//console.log(q)
// 格式化金钱 银行卡的数据类型
const ThousandNum = num => num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
//const money = ThousandNum(19941112);
// money => "19,941,112"
// 生成随机ID
const RandomId = len => Math.random().toString(36).substr(3, len);
//const id = RandomId(10);
// id => "jg7zpgiqva"
// 生成范围随机数
const RandomNum = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
//const num = RandomNum(1, 10);
// 生成随机颜色
const RandomColor = () => "#" + Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0");
//const color = RandomColor();
// color => "#f03665"
// 生成星级评价
const StartScore = rate => "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);
//const start = StartScore(3);
// start => "★★★"
// 数值前补0
const FillZero = (num, len) => num.toString().padStart(len, "0");
//const num = FillZero(169, 5);
// num => "00169"
// 精确小数
const RoundNum = (num, decimal) => Math.round(num * 10 ** decimal) / 10 ** decimal;
//const num = RoundNum(1.69, 1);
// num => 1.7
// 精确几位小数
// 判断数据类型最全集
const DataType=(tgt, type)=> {
const dataType = Object.prototype.toString.call(tgt).replace(/\[object /g, "").replace(/\]/g, "").toLowerCase();
return type ? dataType === type : dataType;
}
//DataType("yajun"); // "string"
//DataType(19941112); // "number"
//DataType(true); // "boolean"
//DataType([], "array"); // true
//DataType({}, "array"); // false
// 混淆数组
const confusionArray= arr => [0, 1, 2, 3, 4, 5].slice().sort(() => Math.random() - .5);
// 过滤数组全部undefined、null、""、0、false、NaN
const filterAll = arr =>afrr.filter(Boolean)
// 统计数据的成员
const getArrCount = arr=>arr.reduce((t, c) => {
t[c] = t[c] ? ++ t[c] : 1;
return t;
}, {});
//getArrCount( [0, 1, 1, 2, 2, 2];)
// {0: 1, 1: 2, 2: 3}
//获取数组随机成员
const randomItem = arr=>arr[Math.floor(Math.random() * arr.length)];
// 深拷贝(支持多层嵌套)
const deepCopy = (data) => {
const t = Utils.typeOf(data);
let o;
if (t === 'array') {
o = [];
} else if (t === 'object') {
o = {};
} else {
return data;
}
if (t === 'array') {
for (let i = 0, len = data.length; i < len; i++) {
o.push(Utils.deepCopy(data[i]));
}
} else if (t === 'object') {
// eslint-disable-next-line
for (const i in data) {
if (Object.prototype.hasOwnProperty.call(data, i)) {
o[i] = Utils.deepCopy(data[i]);
}
}
}
return o;
};
// 删除对象中 null undefined '' 的属性
const objRemoveNull = (obj) => {
const typeOf = (obj) => {
// eslint-disable-next-line
const toString = Object.prototype.toString;
const map = {
'[object Boolean]': 'boolean',
'[object Number]': 'number',
'[object String]': 'string',
'[object Function]': 'function',
'[object Array]': 'array',
'[object Date]': 'date',
'[object RegExp]': 'regExp',
'[object Undefined]': 'undefined',
'[object Null]': 'null',
'[object Object]': 'object',
};
return map[toString.call(obj)];
};
if (typeOf(obj) !== 'object') {
return {};
}
const result = Utils.deepCopy(obj);
Object.entries(result).forEach((item) => {
// eslint-disable-next-line
if (item[1] == null || item[1] == undefined || item[1] === '') {
delete result[item[0]];
}
});
return result;
};
//校验手机号 座机 分机号码
const validPhoneNumber = (phoneNumber) => {
const isMobile = /^1(3|4|5|6|7|8|9)[0-9]\d{8}$/;
const isPhone = /^(0\d{2,3}-?)?\d{7,8}$/;
const isExt = /^[48]00-?\d{3}-?\d{4}$/;
if (isMobile.test(phoneNumber)) {
return true;
}
if (isPhone.test(phoneNumber)) {
return true;
}
if (isExt.test(phoneNumber)) {
return true;
}
return false;
};
// 校验身份证
const validIDCard = (cid) => {
const arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
const arrValid = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
if (/^\d{17}\d|x$/i.test(cid)) {
let sum = 0;
for (let i = 0; i < cid.length - 1; i++) {
// 对前17位数字与权值乘积求和
sum += parseInt(cid.substr(i, 1), 10) * arrExp[i];
}
// 计算模(固定算法)
const idx = sum % 11;
// 检验第18为是否与校验码相等
return `${arrValid[idx]}` === cid.substr(17, 1).toUpperCase();
}
return false;
};
// 通过身份证判断年龄
const getAgeByIdCard = (idcard) => {
if (!this.validIDCard(idcard)) {
return null;
}
return (new Date()).getFullYear() - parseInt(idcard.substring(6, 10), 10);
};
网友评论