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

2022-11-18 14:01:44 浏览数 (1)

目录

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

2、计算字符串长度 calculateStrLengh

3、转换日期格式 changeDateFormat

4、节流函数 throttle

5、防抖函数 debounce

6、获取地址栏参数 GetUrlParam

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

8、判断 Object 是否为空 isEmptyObject

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

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


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

代码语言:javascript复制
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

代码语言:javascript复制
//计算字符长度(一个汉字2个字符)
function calculateStrLengh(str){
	var len=0;
	if(!isExist(str)){
		return 0;
	}
	for (var i=0; i<str.length; i  ) {
		var c = str.charCodeAt(i);
		//单字节加1
		if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
			len  ;
		}
		else {
			len =2;
		}
	}
	return len;
}

3、转换日期格式 changeDateFormat

代码语言:javascript复制
//转换日期格式(时间戳转换为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

代码语言:javascript复制
/**  
 * 节流  
 */  
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

代码语言:javascript复制
//防抖  
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

代码语言:javascript复制
//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 

代码语言:javascript复制
// 判断两个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

代码语言:javascript复制
//判断object为空
function isEmptyObject (e) {
  for (var t in e)
    return !1;
  return !0
}

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

代码语言:javascript复制
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

代码语言:javascript复制
// 判断是否为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];
}

0 人点赞