JS常用功能代码片段

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
      let url=window.location.href
      const paramArr = url.slice(url.indexOf("?") + 1).split("&")
      let params = {}
      paramArr.forEach((param) => {
          const [key, val] = param.split("=")
          params[key] = decodeURIComponent(val)
      });
      return params[name]
    }
  // 使用取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数字转换为金额大写(1)
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'));  //输出:伍万肆仟叁佰贰拾壹元捌角捌分
16数字转换为金额大写(2)
function digitUppercase(n) {
      var fraction = ["角", "分"];
      var digit = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
      var unit = [
        ["元", "万", "亿"],
        ["", "拾", "佰", "仟"]
      ];
      var head = n < 0 ? "欠" : "";
      n = Math.abs(n);
      var s = "";
      for (var i = 0; i < fraction.length; i++) {
        s += (
          digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]
        ).replace(/零./, "");
      }
      s = s || "整";
      n = Math.floor(n);
      for (var i = 0; i < unit[0].length && n > 0; i++) {
        var p = "";
        for (var j = 0; j < unit[1].length && n > 0; j++) {
          p = digit[n % 10] + unit[1][j] + p;
          n = Math.floor(n / 10);
        }
        s = p.replace(/(零.)*零$/, "").replace(/^$/, "零") + unit[0][i] + s;
      }
      return (
        head +
        s
          .replace(/(零.)*零元/, "元")
          .replace(/(零.)+/g, "零")
          .replace(/^整$/, "零元整")
      );
    }
console.log(digitUppercase(1236.87))  //壹仟贰佰叁拾陆元捌角柒分

后续会继续添加

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。