JavaScript工作中经常会用到的工具类集合

获取 url 中"?"符后的字串

function GetRequest() {
  var url = window.location.search;
  var theRequest = new Object();
  if (url.indexOf("?") != -1) {
    var str = decodeURI(url.substr(1));
    strs = str.split("&");
    for (var i = 0; i < strs.length; i++) {
      theRequest[strs[i].split("=")[0]] = strs[i].split("=")[1];
    }
  }
  return theRequest;
}
<!-- 调用 -->
<!-- console.log(GetRequest().xxx) -->

null/undefined 转空字符串

function parseStrEmpty(key) {
  if ([null, "null", undefined, "undefined"].includes(key)) return "";
  else return key;
}

json 转字符串

function jsonToString (json) {
    return JSON.stringify(json)
}

手机号码格式正误

function isPhoneNum(str) {
    return /^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/.test(str)
}

邮箱正误

function isEmail(str) {
    return /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(str);
}

手机号脱敏

function telKeep(phoneNumber) {
    if (phoneNumber) {
        let reg = /^(\d{3})\d*(\d{4})$/;
        return String(phoneNumber).replace(reg, '$1****$2')
    }
}

通用脱敏方法(身份证/银行卡/手机号/邮箱等等)

function Desensitization(str,beginLen,endLen) {
    var len = str.length;
    var firstStr = str.substr(0,beginLen);
    var lastStr = str.substr(endLen);
    var middleStr = str.substring(beginLen, len-Math.abs(endLen)).replace(/[\s\S]/ig, '*');
    tempStr = firstStr + middleStr + lastStr;
    return tempStr;
}

日期转时间戳

function timeToTimeStamp (time) {
    return +time
}

验证数组中是否有空值

function validateArrayEmpty (arr) {
    console.log(arr)
    if(arr.length) {
        for (var el of arr) {
            for(var key in el) {
                if( ['',null,undefined].includes(el[key]) ) {
                    console.log('有空值')
                    return
                }
            }
        }
    }
}

Blob 转 Base64

function blobToDataURI(blob, callback) {
    console.log('blob',blob)
    var reader = new FileReader();
    reader.readAsDataURL(blob);
    reader.onload = function (e) {
        callback(e.target.result);
    }
}

保留小数点后几位

function formatDecimal(num, decimal) {
     num = num.toString()
     let index = num.indexOf('.')
     if (index !== -1) {
         num = num.substring(0, decimal + index + 1)
     } else {
         num = num.substring(0)
     }
     return parseFloat(num).toFixed(decimal)
 }

时间戳转日期

function formatTime(current,type = 1) {
    let temp = current
    if (typeof Number(temp) === 'number' && !isNaN(Number(temp))) {
      temp = Number(temp)
    } else if (typeof temp === 'string' && isNaN(Number(temp))) {
      temp = temp.toString().replace('-', '/').replace('-', '/')
      return temp
    }

    var date = new Date(temp)
    var yyyy = date.getFullYear()
    var MM = date.getMonth() + 1 >= 10 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1)
    var dd = date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()
    var HH = date.getHours() >= 10 ? date.getHours() : '0' + date.getHours()
    var mm = date.getMinutes() >= 10 ? date.getMinutes() : '0' + date.getMinutes()
    var ss = date.getSeconds() >= 10 ? date.getSeconds() : '0' + date.getSeconds()
    if (type === 1) {
      return yyyy + '-' + MM + '-' + dd + ' ' + HH + ':' + mm + ':' + ss
    } else if (type === 2) {
      return yyyy + '-' + MM + '-' + dd + ' 00:00:00'
    } else if (type === 3) {
      return yyyy + '-' + MM + '-' + dd + ' 23:59:59'
    } else if (type === 4) {
      return yyyy + '-' + MM + '-' + dd
    }
}

获取两个时间差(常用于开始日期/结束日期比较)

function getDateDiff(startTime, endTime) {
 //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式
 startTime = startTime.replace(/\-/g, "/");
 endTime = endTime.replace(/\-/g, "/");
 var sTime = new Date(startTime); //开始时间
 var eTime = new Date(endTime); //结束时间
 var timeOff = eTime - sTime; //相差时间戳(毫秒数)
 var timeMinute = 1000 * 60;
 var timeHour = 1000 * 3600;
 var timeDay = 1000 * 3600 * 24;
 var timeYear = 1000 * 3600 * 24 * 365;
 if(timeOff / timeYear >= 1) {
    return parseInt(timeOff / timeYear) + "年" + parseInt((timeOff % timeYear)/timeDay) + "天";
 } else if(timeOff / timeDay >= 1) {
    return parseInt(timeOff / timeDay) + "天" + parseInt((timeOff % timeDay)/timeHour) + "小时";
 } else {
   return parseInt(timeOff / timeHour) + "小时" + parseInt((timeOff % timeHour)/timeMinute) + "分";
 }
}

获取两个日期相差天数

function dateDiff (sDate1, sDate2) {
    let arrDate, objDate1, objDate2, iDays;
    arrDate = sDate1.split('-');
    objDate1 = new Date(arrDate[1] + '/' + arrDate[2] + '/' + arrDate[0])
    arrDate = sDate2.split('-');
    objDate2 = new Date(arrDate[1] + '/' + arrDate[2] + '/' + arrDate[0]);
    iDays = parseInt(Math.abs(objDate1 - objDate2) / 1000 / 60 / 60 / 24); // 相差毫秒数转成天数
    return iDays;
}
posted @ 2021-12-04 22:49  杨凌云的博客  阅读(93)  评论(0)    收藏  举报