判断数据类型
1 function isType(type) { 2 return function(obj) { 3 return {}.toString.call(obj) == "[object " + type + "]" 4 } 5 } 6 7 var isObject = isType("Object"); 8 var isString = isType("String"); 9 var isArray = isType("Array"); 10 var isFunction = isType("Function"); 11 var isUndefined = isType("Undefined"); 12 13 //使用方法 14 isString('sss'); //true
判断是否是PC端
1 function isPC() { 2 var userAgentInfo = navigator.userAgent, Agents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod'], 3 flag = true; 4 for (var i = 0; i < Agents.length; i++) { 5 if (userAgentInfo.indexOf(Agents[i]) > 0) { 6 flag = false; 7 break; 8 } 9 } 10 return flag; 11 } 12 13 //使用方法 14 isPC(); //true为pc端
判断是否微信浏览器
1 function isWX() { 2 var ua = window.navigator.userAgent.toLowerCase(); 3 return ua.match(/MicroMessenger/i) == 'micromessenger'; 4 } 5 6 //使用方法 7 isWX(); //true为微信浏览器
生成随机字符串(可指定长度,默认32)
1 function randomNumber(len) { 2 len = len || 32; 3 var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz12345678'; //默认去掉了容易混淆的字符 4 var maxPos = chars.length, 5 pwd = ''; 6 for (var i = 0; i < len; i++) { 7 pwd += chars.charAt(Math.floor(Math.random() * maxPos)); 8 } 9 return pwd; 10 } 11 12 //使用方法 13 randomNumber(8); //可用于文件路径随机数
生成唯一标识GUID(订单号等使用)
1 function generateUUID() { 2 var d = new Date().getTime(); 3 var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { 4 var r = (d + Math.random() * 16) % 16 | 0; 5 d = Math.floor(d / 16); 6 return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16); 7 }); 8 return uuid; 9 }; 10 11 // 使用方法 12 generateUUID(); //需要唯一标识时可用
获取网址的参数值(单个值)
function getQueryString(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); var r = window.location.search.substr(1).match(reg); if (r != null) { return unescape(r[2]); } return null; }
// http://xxxx.com/?name=hehe
getQueryString("name"); //hehe
获取网址的参数值(返回所有参数为JSON数据)
function GetUrlParam(){ let url = document.location.toString(); let arrObj = url.split("?"); let params = Object.create(null) if (arrObj.length > 1){ arrObj = arrObj[1].split("&"); arrObj.forEach(item=>{ item = item.split("="); params[item[0]] = item[1] }) } return params; } // ?a=1&b=2&c=3 ==> {a: "1", b: "2", c: "3"}
数组去重
// 利用对象属性名不能重复
function toRepeat(a, b){ let arr = a.concat(b); let result = []; let obj = {}; for (let i of arr) { if (!obj[i]) { result.push(i) obj[i] = 1 } } return result; }
// ES6 方法 利用new Set()的数组元素唯一性
function distinct(a, b) { return Array.from(new Set([...a, ...b])) }
去除字符串空格
// type 1-所有空格,2-前后空格,3-前空格,4-后空格 function getTrim(str, type){ switch () { 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; } } // 不得不说,正则是真的好用
格式化时间
function dateFormater(formater, t){ let date = t ? new Date(t) : new Date(), Y = date.getFullYear() + '', M = date.getMonth() + 1, D = date.getDate(), H = date.getHours(), m = date.getMinutes(), s = date.getSeconds(); return formater.replace(/YYYY|yyyy/g,Y) .replace(/YY|yy/g,Y.substr(2,2)) .replace(/MM/g,(M<10?'0':'') + M) .replace(/DD/g,(D<10?'0':'') + D) .replace(/HH|hh/g,(H<10?'0':'') + H) .replace(/mm/g,(m<10?'0':'') + m) .replace(/ss/g,(s<10?'0':'') + s) } // dateFormater('YYYY-MM-DD HH:mm', t) ==> 2019-06-26 18:30 // dateFormater('YYYYMMDDHHmm', t) ==> 201906261830
// 转换时间格式
'2019年06月28日'.replace(/(d{4}).(d{1,2}).(d{1,2}).+/mg, '$1-$2-$3') ===> 2019-06-28
'2019-06-28'.replace(/(d{4}).(d{1,2}).(d{1,2}).+/mg, '$1年$2月$3日') ===> 2019年06月28日
禁止右键、选择、复制
['contextmenu', 'selectstart', 'copy'].forEach(function(ev){ document.addEventListener(ev, function(event){ return event.returnValue = false }) });
一部分是项目中遇到的问题,一部分是网上收集的方法
-- 时间问题,待续 --