javascript一些实用的方法

判断数据类型

 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
    })
});

 

一部分是项目中遇到的问题,一部分是网上收集的方法

-- 时间问题,待续 --

 

posted @ 2019-07-20 01:28  我咯I  阅读(195)  评论(0编辑  收藏  举报