美文网首页
JS常用方法整理

JS常用方法整理

作者: 麦曦 | 来源:发表于2019-08-28 14:40 被阅读0次

    JS常用方法整理

    一、日期相关

    1.二个日期之间相差天数

    export const diffDay = (ms, ms2) => {
        //只精确到天
        return (new Date(ms2).setHours(0, 0, 0, 0) - new Date(ms).setHours(0, 0, 0, 0)) / 864e5
    }
    

    2.返回日期

    /**
     * 
     * @param {*} ms 
     * @param {Sring} break_str 
     */
    export const date_str = (ms, break_str = '-') => {
        let date = new Date(ms);
        let y = date.getFullYear();
        let m = date.getMonth() + 1;
        let d = date.getDate();
        return `${y}${break_str}${complement(m)}${break_str}${complement(d)}`;
    };
    

    3.获取星期几

    export const getWeek = (ms) => {
        let getday = new Date(ms).getDay();
        let week = ['日', '一', '二', '三', '四', '五', '六'];
        return `周${week[getday]}`;
    };
    

    二、字符相关

    1.JS获取字符长度(中文字符占二个字节)**

    export const strLength = (str) => {
        var realLength = 0, len = str.length, charCode = -1;
        for (var i = 0; i < len; i++) {
            charCode = str.charCodeAt(i);
            if (charCode >= 0 && charCode <= 128) realLength += 1;
            else realLength += 2;
        }
        return realLength;
    }
    
    

    三、数组相关

    1.判断数组是否有重复值

    // 判断数组是否有重复值
    export const isRepeat = (arr) => {
        var hash = {};
        for (var i in arr) {
            if (hash[arr[i]]) {
                return true;
            }
            hash[arr[i]] = true;
        }
        return false;
    }
    

    四、正则相关

    1.身份证验证

    //身份证验证
    export const isCardID = (numer) => {
        let sId = numer
        if (sId == '') { return }
        var iSum = 0;
        var aCity = { 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: "澳门", 91: "国外" }
        // "身份证长度或格式错误"
        if (!/^\d{17}(\d|x)$/i.test(sId)) {
            return false
        }
        sId = sId.replace(/x$/i, "a");
        // 你的身份证地区非法
        if (aCity[parseInt(sId.substr(0, 2))] == null) {
            return false
        };
        var sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2));
        var d = new Date(sBirthday.replace(/-/g, "/"));
        // 身份证上的出生日期非法
        if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) {
            return false
        };
        for (var i = 17; i >= 0; i--) iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11);
        // 你输入的身份证号非法
        if (iSum % 11 != 1) {
            return false
        };
        return true;
    }
    

    2.手机号正则

    /^0?1[0-9]\d{9}$/
    

    五、Cookie相关

    1.JS设置cookie

    var data=document.cookie;    
                var dataArray=data.split("; ");    
              for(var i=0;i<dataArray.length;i++){    
                  var varName=dataArray[i].split("=");    
                    if(varName[0]==$name){    
                         return decodeURI(varName[1]);    
                    }                    
         
             } 
    

    2.JS清除cookie

    var myDate=new Date(1);    
            myDate.setTime(-1000);//设置时间    
            var data=document.cookie;    
            var dataArray=data.split("; ");    
            for(var i=0;i<dataArray.length;i++){    
                    var varName=dataArray[i].split("=");    
                    document.cookie=varName[0]+"=''; expires="+myDate.toGMTString()+';domain=.jd.com;path=/';    
            } 
    
    

    设置对应的chrome里查看Domain 和path

    HTTP带勾的是httpOnly

    cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击。在服务器端设置HttpOnly属性,就是禁止客户端的JS对这个Cookie做读写操作。

    相关文章

      网友评论

          本文标题:JS常用方法整理

          本文链接:https://www.haomeiwen.com/subject/fropectx.html