• 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

    1. function isNumber(val){
    2. if(val==""){
    3. return false;
    4. }
    5. if(val.length>1){
    6. if(val.substr(val.length-1, val.length)=="."){
    7. var len = val.split(".").length-1;
    8. if(len>1){
    9. return false;
    10. }
    11. val = val.substr(0, val.length-1);
    12. }
    13. }
    14. var regPos = /^\d+(\.\d+)?$/;
    15. var regNeg = /^((([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;
    16. if(regPos.test(val) || regNeg.test(val)) {
    17. return true;
    18. }
    19. return false;
    20. }

    2、计算字符串长度 calculateStrLengh

    1. //计算字符长度(一个汉字2个字符)
    2. function calculateStrLengh(str){
    3. var len=0;
    4. if(!isExist(str)){
    5. return 0;
    6. }
    7. for (var i=0; ilength; i++) {
    8. var c = str.charCodeAt(i);
    9. //单字节加1
    10. if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
    11. len++;
    12. }
    13. else {
    14. len+=2;
    15. }
    16. }
    17. return len;
    18. }

    3、转换日期格式 changeDateFormat

    1. //转换日期格式(时间戳转换为datetime格式)
    2. function changeDateFormat(cellval, hms) {
    3. var dateVal = cellval + "";
    4. if (cellval != null) {
    5. var date = new Date(parseInt(dateVal.replace("/Date(", "").replace(")/", ""), 10));
    6. var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
    7. var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
    8. var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
    9. var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
    10. var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
    11. if(hms){
    12. return date.getFullYear() + "-" + month + "-" + currentDate + " " + hours + ":" + minutes + ":" + seconds;
    13. }else{
    14. return date.getFullYear() + "-" + month + "-" + currentDate;
    15. }
    16. }
    17. }

    4、节流函数 throttle

    1. /**
    2. * 节流
    3. */
    4. function throttle(fn, wait = 500, isImmediate = false) {
    5. let flag = true;
    6. if (isImmediate) {
    7. return function() {
    8. if (flag) {
    9. fn.apply(this, arguments);
    10. flag = false;
    11. setTimeout(() => {
    12. flag = true
    13. }, wait)
    14. }
    15. }
    16. }
    17. return function() {
    18. if (flag == true) {
    19. flag = false
    20. setTimeout(() => {
    21. fn.apply(this, arguments)
    22. flag = true
    23. }, wait)
    24. }
    25. }
    26. }

    5、防抖函数 debounce

    1. //防抖
    2. function debounce(fn, wait, isImmediate) {
    3. let timerId = null;
    4. let flag = true;
    5. if (isImmediate) {
    6. return function() {
    7. clearTimeout(timerId);
    8. if (flag) {
    9. this[fn]() ;
    10. flag = false
    11. }
    12. timerId = setTimeout(() => {
    13. flag = true
    14. }, wait)
    15. }
    16. }
    17. return function() {
    18. clearTimeout(timerId);
    19. timerId = setTimeout(() => {
    20. this[fn]()
    21. }, wait)
    22. }
    23. }

    6、获取地址栏参数 GetUrlParam

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

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

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

    8、判断 Object 是否为空 isEmptyObject

    1. //判断object为空
    2. function isEmptyObject (e) {
    3. for (var t in e)
    4. return !1;
    5. return !0
    6. }

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

    1. function isExist (str) {
    2. if (str !== null && str !== "undefined" && str !== "" && typeof str != "undefined" && !(typeof (str) == "string" &&
    3. str
    4. .split(" ").join("").length == 0)) {
    5. return true;
    6. } else {
    7. return false;
    8. }
    9. }

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

    1. // 判断是否为IE8
    2. var DEFAULT_VERSION = 8.0;
    3. var ua = navigator.userAgent.toLowerCase();
    4. var isIE = ua.indexOf("msie") > -1;
    5. var safariVersion;
    6. if (isIE) {
    7. safariVersion = ua.match(/msie ([\d.]+)/)[1];
    8. }
  • 相关阅读:
    Cin-Cout vs Scanf-Printf
    6.26CF模拟赛B:数组缩减题解
    如何处理接口调用的频率限制
    基于jsp+mysql+ssm大学本科考研服务系统-计算机毕业设计
    力扣(LeetCode)791. 自定义字符串排序(C++)
    电压提前/滞后电路 —— 电赛综测备赛
    设计模式 17 迭代器模式
    WEB 渗透之端口协议
    java计算机毕业设计基于安卓Android/微信小程序的产后康复APP
    东莞市交投集团供应链服务平台上线啦
  • 原文地址:https://blog.csdn.net/weixin_36754290/article/details/127836342