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做读写操作。
网友评论