JavaScript 中常用和必备的一些工具类函数

目录

1、判断是否为数值函数 isNumber

2、计算字符串长度 calculateStrLengh

3、转换日期格式 changeDateFormat

4、节流函数 throttle

5、防抖函数 debounce

6、获取地址栏参数 GetUrlParam

7、判断两个 Oject 是否相等 isEqualObject 

8、判断 Object 是否为空 isEmptyObject

9、判断字符串是否存在 isExist

10、获取小程序链接的地址栏参数 GetWxMiniProgramUrlParam


1、判断是否为数值函数 isNumber

function isNumber(val){if(val==""){return false;}if(val.length>1){if(val.substr(val.length-1, val.length)=="."){var len = val.split(".").length-1;if(len>1){return false;}val = val.substr(0, val.length-1);}}var regPos = /^\d+(\.\d+)?$/; var regNeg = /^((([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; if(regPos.test(val) || regNeg.test(val)) {return true;}return false;
}

2、计算字符串长度 calculateStrLengh

//计算字符长度(一个汉字2个字符)
function calculateStrLengh(str){var len=0;if(!isExist(str)){return 0;}for (var i=0; i= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {len++;}else {len+=2;}}return len;
}

3、转换日期格式 changeDateFormat

//转换日期格式(时间戳转换为datetime格式)
function changeDateFormat(cellval, hms) {var dateVal = cellval + "";if (cellval != null) {var date = new Date(parseInt(dateVal.replace("/Date(", "").replace(")/", ""), 10));var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();if(hms){return date.getFullYear() + "-" + month + "-" + currentDate + " " + hours + ":" + minutes + ":" + seconds;}else{return date.getFullYear() + "-" + month + "-" + currentDate;}}
}

4、节流函数 throttle

/**  * 节流  */  
function throttle(fn, wait = 500, isImmediate = false) {  let flag = true;  if (isImmediate) {  return function() {  if (flag) {  fn.apply(this, arguments);  flag = false;  setTimeout(() => {  flag = true  }, wait)  }  }  }  return function() {  if (flag == true) {  flag = false  setTimeout(() => {  fn.apply(this, arguments)  flag = true  }, wait)  }  }  
}  

5、防抖函数 debounce

//防抖  
function debounce(fn, wait, isImmediate) {  let timerId = null;  let flag = true;  if (isImmediate) {  return function() {  clearTimeout(timerId);  if (flag) {  this[fn]() ;  flag = false  }  timerId = setTimeout(() => {  flag = true  }, wait)  }  }  return function() {  clearTimeout(timerId);  timerId = setTimeout(() => {  this[fn]()  }, wait)  }  
}

6、获取地址栏参数 GetUrlParam

//js获取地址栏参数  name为参数名
function GetUrlParam (name) {var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");var r = window.location.search.substr(1).match(reg);if (r != null) {return unescape(r[2]);}return null;
}

7、判断两个 Oject 是否相等 isEqualObject 

// 判断两个object是否相等
function isEqualObject (obj1, obj2) {var o1 = obj1 instanceof Object;var o2 = obj2 instanceof Object;if (!o1 || !o2) { /*  判断不是对象  */return obj1 === obj2;}if (Object.keys(obj1).length !== Object.keys(obj2).length) {return false;//Object.keys() 返回一个由对象的自身可枚举属性(key值)组成的数组,例如:数组返回下表:let arr = ["a", "b", "c"];console.log(Object.keys(arr))->0,1,2;}for (var attr in obj1) {var t1 = obj1[attr] instanceof Object;var t2 = obj2[attr] instanceof Object;if (t1 && t2) {return diff(obj1[attr], obj2[attr]);} else if (obj1[attr] !== obj2[attr]) {return false;}}return true;
}

8、判断 Object 是否为空 isEmptyObject

//判断object为空
function isEmptyObject (e) {for (var t in e)return !1;return !0
}

9、判断字符串是否存在 isExist

function isExist (str) {if (str !== null && str !== "undefined" && str !== "" && typeof str != "undefined" && !(typeof (str) == "string" &&str.split(" ").join("").length == 0)) {return true;} else {return false;}
}

10、获取小程序链接的地址栏参数 GetWxMiniProgramUrlParam

// 判断是否为IE8
var DEFAULT_VERSION = 8.0;
var ua = navigator.userAgent.toLowerCase();
var isIE = ua.indexOf("msie") > -1;
var safariVersion;
if (isIE) {safariVersion = ua.match(/msie ([\d.]+)/)[1];
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部