JS常用方法整理

2019-08-28  本文已影响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做读写操作。

上一篇下一篇

猜你喜欢

热点阅读