bdbtool
Version:
the code Tool of bdb
243 lines (242 loc) • 7.38 kB
JavaScript
// name:timestampToTime
// description:时间戳转换
// params:@timestamp 待转换的时间戳
// return:2022-1-1 11:11:11 格式时间
function timestampToTime(timestamp) {
var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
var Y = date.getFullYear() + '-';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
var D = date.getDate() + ' ';
var h = date.getHours() + ':';
var m = date.getMinutes() + ':';
var s = date.getSeconds();
return Y + M + D + h + m + s;
}
// name:uniqueArr
// description:数组去重
// params:@arr 待去重数组
// return:uniqueArr 去重数组
function uniqueArr(arr) {
return [...new Set(arr)]
}
// name:getStyle
// description:获取某一元素的属性
// params:@elem dom元素
// @prop 属性名称
// return:uniqueArr 去重数组
function getStyle(elem, prop) {
return window.getComputedStyle ? window.getComputedStyle(elem, null)[prop] : elem.currentStyle[prop]
}
// name:getWindonHref
// description:获取地址中的参数
function getWindonHref() {
var sHref = window.location.href;
var args = sHref.split('?');
if (args[0] === sHref) {
return '';
}
var hrefarr = args[1].split('#')[0].split('&');
var obj = {};
for (var i = 0; i < hrefarr.length; i++) {
hrefarr[i] = hrefarr[i].split('=');
obj[hrefarr[i][0]] = hrefarr[i][1];
}
return obj;
}
// name:quickArr
// description:数组快排
// params: @arr 待快排数组
// return:uniqueArr 快排后数组
function quickArr(arr) {
if (arr.length <= 1) {
return arr;
}
var left = [],
right = [];
var pIndex = Math.floor(arr.length / 2);
var p = arr.splice(pIndex, 1)[0];
for (var i = 0; i < arr.length; i++) {
if (arr[i] <= p) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
// 递归
return quickArr(left).concat([p], quickArr(right));
}
// name:isAvailableEmail
// description:邮箱验证
// params: @Email 待验证邮箱
// return: boolean true 验证通过 false 验证失败
function isAvailableEmail(Email) {
var reg = /^([\w+\.])+@\w+([.]\w+)+$/
return reg.test(Email)
}
// name:isAvailablePhone
// description:手机号验证
// params: @Email 待验证手机号
// return: boolean true 验证通过 false 验证失败
function isAvailablePhone(phoneNurmber) {
var phoneReg = /(^1\d{10}$)|(^[0-9]\d{7}$)/;
return phoneReg.test(phoneNurmber)
}
var checkProv = function(val) {
var pattern = /^[1-9][0-9]/;
var provs = {
11: "北京",
12: "天津",
13: "河北",
14: "山西",
15: "内蒙古",
21: "辽宁",
22: "吉林",
23: "黑龙江 ",
31: "上海",
32: "江苏",
33: "浙江",
34: "安徽",
35: "福建",
36: "江西",
37: "山东",
41: "河南",
42: "湖北 ",
43: "湖南",
44: "广东",
45: "广西",
46: "海南",
50: "重庆",
51: "四川",
52: "贵州",
53: "云南",
54: "西藏 ",
61: "陕西",
62: "甘肃",
63: "青海",
64: "宁夏",
65: "新疆",
71: "台湾",
81: "香港",
82: "澳门"
};
if (pattern.test(val)) {
if (provs[val]) {
return true;
}
}
return false;
}
var checkDate = function(val) {
var pattern = /^(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)$/;
if (pattern.test(val)) {
var year = val.substring(0, 4);
var month = val.substring(4, 6);
var date = val.substring(6, 8);
var date2 = new Date(year + "-" + month + "-" + date);
if (date2 && date2.getMonth() == (parseInt(month) - 1)) {
return true;
}
}
return false;
}
// 校验码校验
var checkCode = function(val) {
var p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
var code = val.substring(17);
if (p.test(val)) {
var sum = 0;
for (var i = 0; i < 17; i++) {
sum += val[i] * factor[i];
}
if (parity[sum % 11] == code.toUpperCase()) {
return true;
}
}
return false;
}
// name:checkID
// description:身份证号验证
// params: @Email 待验证身份证号
// return: boolean true 验证通过 false 验证失败
function checkID(val) {
if (checkCode(val)) {
var date = val.substring(6, 14);
if (checkDate(date)) {
if (checkProv(val.substring(0, 2))) {
return true;
}
}
}
return false;
}
// name:getScrollOffset
// description:获取当前滚动条长度
// return:x滚动条x值 y:滚动条y值
function getScrollOffset() {
if (window.pageXOffset) {
return {
x: window.pageXOffset,
y: window.pageYOffset
}
} else {
return {
x: document.body.scrollLeft + document.documentElement.scrollLeft,
y: document.body.scrollTop + document.documentElement.scrollTop
}
}
}
// name:getViewportOffset
// description:获得视窗尺寸
// return:w:视窗宽度 h:视窗高度
function getViewportOffset() {
if (window.innerWidth) {
return {
w: window.innerWidth,
h: window.innerHeight
}
} else {
// ie8及其以下
if (document.compatMode === "BackCompat") {
// 怪异模式
return {
w: document.body.clientWidth,
h: document.body.clientHeight
}
} else {
// 标准模式
return {
w: document.documentElement.clientWidth,
h: document.documentElement.clientHeight
}
}
}
}
// name:antishake
// description:防抖
// params: @fu 待防抖函数 time 防抖时间
// return: 防抖后的函数
function antishake(fu,time) {
let timeOut = null;
return function() {
if(timeOut) clearInterval(timeOut)
timeOut = setTimeout(fu,time)
}
}
// name:throttle
// description:节流
// params: @fu 待节流函数 time 节流时间
// return: 节流后的函数
function throttle(fu,time) {
let timeOut = null;
return function() {
if(!timeOut) {
timeOut = setTimeout(()=>{
fu();
timeOut = null;
},time)
}
}
}
export default{timestampToTime,throttle,antishake,getViewportOffset,getScrollOffset,checkCode,checkID,checkProv,isAvailablePhone,isAvailableEmail,quickArr,getWindonHref,getStyle,uniqueArr}