zoukankan      html  css  js  c++  java
  • 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
        })
    });

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

    -- 时间问题,待续 --

  • 相关阅读:
    菜鸟学存储:网络存储IP SAN与IB SAN
    读xml高手
    预先加载图片
    xred520
    最简单准确的硬盘整数分区设置操作方法
    Google 每天处理约 20000TB 的数据
    IE 8 无法正常使用网站后台编辑器问题
    常用的JS技术1
    adodb stream 使用说明
    [Tools] JDGUI(Java Decompiler)
  • 原文地址:https://www.cnblogs.com/wangjishu/p/11152828.html
Copyright © 2011-2022 走看看