JS常用功能代码片段

作者: 回到唐朝做IT | 来源:发表于2019-12-19 17:12 被阅读0次
    1字符串操作
    var a="aaabbbccc";  
    var b="la,la,la"; 
    
    var concat=a.concat(b);              //将a,b合并成同一个字符串
    var split=b.split(',');              //将b切割成数组
    var index=a.indexOf('b');             //第一个b在数组中的位置
    var lastIndex=a.lastIndexOf('b');     //最后一个b在数组中的位置
    var charAt=a.charAt(3);               //字符串中的第四个字符
    var substring=a.substring(3,6);   //截取字符串的起始位置和结束位置
    var  substr=a.substr(3,6);         //截取字符串的起始位置和长度 
    var slice=a.slice(3,6);           //同substring,负数有区别
    var low=a.toLowerCase();            //小写
    var upp=a.toUpperCase();        // 并不会改变a本身的大小写
    
    2获取url上参数
      //获取url参数方法
       function getQueryString(name) { //取url上的id
          var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
          var r = window.location.search.substr(1).match(reg);
          if (r != null) return unescape(r[2]);
          return null;
        }
      // 使用取url上的id
      var courseId = getQueryString("id");
    
    3获取当前日期时间
    function getCurrentDate() {
      var timeStr = '-';
      var curDate = new Date();
      var curYear = curDate.getFullYear(); //获取完整的年份(4位,1970-????)
      var curMonth = curDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
      var curDay = curDate.getDate(); //获取当前日(1-31)
      var curWeekDay = curDate.getDay(); //获取当前星期X(0-6,0代表星期天)
      var curHour = curDate.getHours(); //获取当前小时数(0-23)
      var curMinute = curDate.getMinutes(); // 获取当前分钟数(0-59)
      var curSec = curDate.getSeconds(); //获取当前秒数(0-59)
      var Current = curYear + timeStr + curMonth + timeStr + curDay + ' ' + curHour + ':' + curMinute + ':' + curSec;
      console.log(Current);
      return Current;
    }
    getCurrentDate()     //输出:2019-12-19 16:39:22
    
    4单个倒计时
    function TimeDown(end) {  //获取剩余时间   参数即为将截至的时间,格式为:xxxx-xx-xx xx:xx:xx
      let nowtime = new Date().getTime(); // 当前时间 毫秒数
      let endTime = Date.parse(new Date(end.replace(/-/g, "/"))); //结束时间  毫秒数
      let totalSeconds = (endTime - nowtime) / 1000; // 结束时间-当前时间 = 剩余多少时间秒
      let day = parseInt(totalSeconds / 3600 / 24); //天
      let hour = parseInt((totalSeconds / 3600) % 24); //时
      let minute = parseInt((totalSeconds / 60) % 60); //分
      let second = parseInt(totalSeconds % 60); //秒
      let residueTime ="倒计时:" + day + "天 " + hour + "时 " + minute + "分 " + second + "秒";
      console.log(residueTime);
      if (totalSeconds <= 0) {
        return totalSeconds; //即倒计时结束
      } else {
        return residueTime;
      }
    }
    function setIntervalTime() {  //倒计时函数
      var timeId = setInterval(function() {
        let curTime = TimeDown("2019-12-25 12:00:00");    //若剩余时间小于等于0 清除定时器
        if (curTime <= 0) {
          clearInterval(timeId);
          timeId = null;
        }
      }, 1000);
    }
    setIntervalTime();   //调用定时器 
    //注意:页面离开或销毁根据情况也要清除定时器,重新进入页面时再次调用
    

    多个定时器同步刷新

    5个性化格式输出时间
    /*
    1、< 60s, 显示为“刚刚”
    2、>= 1min && < 60 min, 显示与当前时间差“XX分钟前”
    3、>= 60min && < 1day, 显示与当前时间差“今天 XX:XX”
    4、>= 1day && < 1year, 显示日期“XX月XX日 XX:XX”
    5、>= 1year, 显示具体日期“XXXX年XX月XX日 XX:XX”
     */
    function timeFormat(time) {
      var date = new Date(time),
        curDate = new Date(),
        year = date.getFullYear(),
        month = date.getMonth() + 1,
        day = date.getDate(),
        hour = date.getHours(),
        minute = date.getMinutes(),
        seconds = date.getSeconds(),
        curYear = curDate.getFullYear(),
        curHour = curDate.getHours(),
        timeStr;
    
      if (year < curYear) {
        timeStr = year + '年' + month + '月' + day + '日 ' + hour + ':' + minute + ':' + seconds;
      } else {
        var pastTime = curDate - date,
          pastH = pastTime / 3600000;
    
        if (pastH > curHour) {
          timeStr = month + '月' + day + '日 ' + hour + ':' + minute + ':' + seconds;
        } else if (pastH >= 1) {
          timeStr = '今天 ' + hour + ':' + minute + ':' + seconds;
        } else {
          var pastM = curDate.getMinutes() - minute;
          console.log(curDate.getMinutes());
          console.log(minute);
          console.log(pastM);
          if (pastM > 1) {
            timeStr = pastM + '分钟前';
          } else {
            timeStr = '刚刚';
          }
        }
      }
      return timeStr;
    }
    timeFormat('2019-12-18 15:41:22')
    
    6判断是否移动设备访问
    function isMobileUserAgent() {
      return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));
    }
    isMobileUserAgent()  //输出:true  ||  false
    
    7判断是否苹果移动设备访问
    function isAppleMobileDevice() {
      return (/iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()));
    }
    isAppleMobileDevice()  //输出:true  ||  false
    
    8判断是否安卓移动设备访问
    function isAppleMobileDevice() {
      return (/iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()));
    }
    isAppleMobileDevice()  //输出:true  ||  false
    
    9判断是否是微信环境访问
    function isWeixinEnvironment() {
      var ua = navigator.userAgent.toLowerCase();
      var isWeixin = ua.indexOf('micromessenger') != -1;
      return isWeixin
    }
    isWeixinEnvironment()  //输出:true  ||  false
    
    10判断是否为网址
    function IsURL(strUrl) {
      var regular = /^\b(((https?|ftp):\/\/)?[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|aero|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:\@&?=+,.!\/~%\$]*)?)$/i
      if (regular.test(strUrl)) {
        return true;
      } else {
        return false;
      }
    }
    IsURL('https://www.baidu.com')  //输出  true
    IsURL('htts://www.baidu.com')  //输出  false
    
    11判断变量是否为空值
    /**
     * 判断变量是否空值
     * undefined, null, '', false, 0, [], {} 均返回true,否则返回false
     */
    function empty(v){
      switch (typeof v){
        case 'undefined' : return true;
        case 'string'    : if(v.trim().length == 0) return true; break;
        case 'boolean'   : if(!v) return true; break;
        case 'number'    : if(0 === v) return true; break;
        case 'object'    : 
          if(null === v) return true;
          if(undefined !== v.length && v.length==0) return true;
          for(var k in v){return false;} return true;
          break;
      }
      return false;
    }
    
    12获取窗体可见范围的宽与高
    function getViewSize() {
        var de = document.documentElement;
        var db = document.body;
        var viewW = de.clientWidth == 0 ?  db.clientWidth : de.clientWidth;
        var viewH = de.clientHeight == 0 ?  db.clientHeight : de.clientHeight;
        return Array(viewW ,viewH);
    }
    
    13范围内的随机整数

    使用Math.random()生成一个随机数并将其映射到所需的范围,使用Math.floor()使其成为一个整数。

    function randomIntegerInRange (min,max){
        return Math.floor(Math.random() * (max - min + 1)) + min
    }
    // randomIntegerInRange(0, 5) -> 2
    
    14范围内的随机数

    使用Math.random()生成一个随机值,使用乘法将其映射到所需的范围。

    function randomInRange (min,max){
        return (min, max) => Math.random() * (max - min) + min
    }
    // randomInRange(2,10) -> 6.0211363285087005
    
    15base64解码
    function base64_decode(data){
        var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
        var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,ac = 0,dec = "",tmp_arr = [];
        if (!data) { return data; }
        data += '';
        do { 
            h1 = b64.indexOf(data.charAt(i++));
            h2 = b64.indexOf(data.charAt(i++));
            h3 = b64.indexOf(data.charAt(i++));
            h4 = b64.indexOf(data.charAt(i++));
            bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
            o1 = bits >> 16 & 0xff;
            o2 = bits >> 8 & 0xff;
            o3 = bits & 0xff;
            if (h3 == 64) {
                tmp_arr[ac++] = String.fromCharCode(o1);
            } else if (h4 == 64) {
                tmp_arr[ac++] = String.fromCharCode(o1, o2);
            } else {
                tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
            }
        } while (i < data.length);
        dec = tmp_arr.join('');
        dec = utf8_decode(dec);
        return dec;
    }
    
    16数字转换为金额大写
    function transform(tranvalue) {
      try {
        var i = 1;
        var dw2 = new Array("", "万", "亿"); //大单位
        var dw1 = new Array("拾", "佰", "仟"); //小单位
        var dw = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //整数部分用
        //以下是小写转换成大写显示在合计大写的文本框中
        //分离整数与小数
        var source = splits(tranvalue);
        var num = source[0];
        var dig = source[1];
        //转换整数部分
        var k1 = 0; //计小单位
        var k2 = 0; //计大单位
        var sum = 0;
        var str = "";
        var len = source[0].length; //整数的长度
        for (i = 1; i <= len; i++) {
          var n = source[0].charAt(len - i); //取得某个位数上的数字
          var bn = 0;
          if (len - i - 1 >= 0) {
            bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字
          }
          sum = sum + Number(n);
          if (sum != 0) {
            str = dw[Number(n)].concat(str); //取得该数字对应的大写数字,并插入到str字符串的前面
            if (n == '0') sum = 0;
          }
          if (len - i - 1 >= 0) { //在数字范围内
            if (k1 != 3) { //加小单位
              if (bn != 0) {
                str = dw1[k1].concat(str);
              }
              k1++;
            } else { //不加小单位,加大单位
              k1 = 0;
              var temp = str.charAt(0);
              if (temp == "万" || temp == "亿") //若大单位前没有数字则舍去大单位
                str = str.substr(1, str.length - 1);
              str = dw2[k2].concat(str);
              sum = 0;
            }
          }
          if (k1 == 3) //小单位到千则大单位进一
          {
            k2++;
          }
        }
        //转换小数部分
        var strdig = "";
        console.log(num);
        console.log(dig);
        if (dig != "") {
          var n = dig.charAt(0);
          if (n != 0) {
            strdig += dw[Number(n)] + "角"; //加数字
          }
          var n = dig.charAt(1);
          if (n != 0) {
            strdig += dw[Number(n)] + "分"; //加数字
          }
        }
        str += "元" + strdig;
      } catch (e) {
        return "0元";
      }
      return str;
    }
    //拆分整数与小数
    function splits(tranvalue) {
      var value = new Array('', '');
      temp = tranvalue.split(".");
      for (var i = 0; i < temp.length; i++) {
        value[i] = temp[i];
      }
      return value;
    }
    
    console.log(transform('54321.88'));  //输出:伍万肆仟叁佰贰拾壹元捌角捌分
    

    后续会继续添加

    相关文章

      网友评论

        本文标题:JS常用功能代码片段

        本文链接:https://www.haomeiwen.com/subject/akxvnctx.html