• 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. }
  • 相关阅读:
    could not read ok from ADB Server
    ShuffleNet paper笔记
    【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
    java毕业设计参考文献基于SSM学生成绩管理系统
    深度之眼(二十一)——概率论
    智能工厂建设整体解决方案
    go 语言之 select
    Opencv与python实现多目标跟踪 (二)- 目标跟踪
    为什么Redis集群的最大槽数是16384个?
    现货白银应该遵守哪些规则?
  • 原文地址:https://blog.csdn.net/weixin_36754290/article/details/127836342