JS - 常用代码

213 阅读2分钟

hey ~ 我是肥阳,后期会持续更新,请记得点赞支持哟

  • 判断手机系统类型

var u = navigator.userAgent;
if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {
    //安卓手机
} else if (u.indexOf('iPhone') > -1) {
    //苹果手机
} else if (u.indexOf('Windows Phone') > -1) {
 //winphone手机
}
  • 判断是否在微信中打开

function isWX() {
    var ua = navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i)=="micromessenger") {
        return true;
    } else {
        return false;
    }
}
  • 获取时间戳

1、var timestamp = Date.parse(new Date());  把毫秒改成000显示
2、var timestamp = (new Date()).valueOf();  获取了当前毫秒的时间戳
3、var timestamp=new Date().getTime();      获取了当前毫秒的时间戳
  • 时间戳转义

时间戳有 10位13位,为什么会有这两种呢?百度查询得到以下结论:
java的date默认精度是毫秒,也就是说生成的时间戳就是13位的,而像c++或者php生成的时间戳默认就是10位的,其精度是秒。

function formatTime(time) {
    if (time * 1000 < 1) {
      return '';
    }
    var date = new Date(time * 1000);
    var month = date.getMonth() + 1;
    var day = date.getDate();
    var hour = date.getHours();
    var min = date.getMinutes();
    var sec = date.getSeconds();
    month = (month < 10 ? "0" : "") + month;
    day = (day < 10 ? "0" : "") + day;
    hour = (hour < 10 ? "0" : "") + hour;
    min = (min < 10 ? "0" : "") + min;
    sec = (sec < 10 ? "0" : "") + sec;
    var str = date.getFullYear() + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec;
    return str;
},
formatTime(1559540971) // "2019-06-03 13:49:31"
如果时间戳是13位,需要先除以1000转换为10位时间戳进行转换
  • 地址栏获取参数

function getUrlSearch(name) {
  // 未传参,返回空
  if (!name) return null;
  // 查询参数:先通过search取值,如果取不到就通过hash来取
  var after = window.location.search;
  after = after.substr(1) || window.location.hash.split('?')[1];
  // 地址栏URL没有查询参数,返回空
  if (!after) return null;
  // 如果查询参数中没有"name",返回空
  if (after.indexOf(name) === -1) return null;
 
  var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
  // 当地址栏参数存在中文时,需要解码,不然会乱码
  var r = decodeURI(after).match(reg);
  // 如果url中"name"没有值,返回空
  if (!r) return null;
 
  return r[2];
}
getUrlSearch('参数名');
  • 九九乘法表

for (var i = 1; i < 10; i ++){
    for (var j = 1; j <= i; j ++) {
    	var sum = i*j;
    	document.write(i+'x'+j+'='+sum+' ');
    }
    document.write("<br />")
}
  • 编码&解码

原理:对URL的组成部分进行个别编码,而不用于对整个URL进行编码

encodeURIComponent();
decodeURIComponent();
  • 在不改变原有数字长度的前提下 +1

function getNextCode(v){
  var len = v.length;
  var count = 1;
  var reg = /^\d+$/;
  var num,left,code;
  do{
    num = v.slice(-count);
    if(!reg.test(num)){code = '';break;}
    left = v.slice(0,len-count);
    code = left+(parseInt(num,10)+1);
    count++;
  } while(code.length!=len);
  return code;
}
getNextCode('00000102196UBQBD9996'); // "00000102196UBQBD9997"
  • 遍历对象并清空对象的值

function EmptyBeforeAdd(box) {
  Object.keys(box).forEach((key) => {
    box[key] = '';
  });
}
  • 去掉字符串前后所有空格

function Trim(str) { 
    return str.replace(/(^\s*)|(\s*$)/g, ""); 
}
var a = '   womem a ';
Trim(a);        // 'womem a'
  • 去掉字符串中所有空格(包括中间空格,需要设置第2个参数为:g)

function Trim(str,is_global) {
    var result;
    result = str.replace(/(^\s+)|(\s+$)/g,"");
    if(is_global.toLowerCase()=="g"){
        result = result.replace(/\s/g,"");
    }
    return result;
}
var a = '   womem a ';
Trim(a, 'g');   // 'womema'
  • 时间比较

//时间比较(yyyy-MM-dd)
function compareDate(startDate, endDate) {
  var arrStart = startDate.split("-");
  var startTime = new Date(arrStart[0], arrStart[1], arrStart[2]);
  var startTimes = startTime.getTime();
  var arrEnd = endDate.split("-");
  var endTime = new Date(arrEnd[0], arrEnd[1], arrEnd[2]);
  var endTimes = endTime.getTime();
  if (endTimes<startTimes) {
    alert("结束时间不能小于开始时间");
    return false;
  }
  return true;
}
//时间比较(yyyy-MM-dd HH:mm:ss)
function compareTime(startTime,endTime) {
  var startTimes = startTime.substring(0, 10).split('-');
  var endTimes = endTime.substring(0, 10).split('-');
  startTime = startTimes[1] + '-' + startTimes[2] + '-' + startTimes[0] + ' ' + startTime.substring(10, 19);
  endTime = endTimes[1] + '-' + endTimes[2] + '-' + endTimes[0] + ' ' + endTime.substring(10, 19);
  var thisResult = (Date.parse(endTime) - Date.parse(startTime)) / 3600 / 1000;
  if (thisResult < 0) {
    alert("endTime小于tartTime!");
  } else if (thisResult > 0) {
    alert("endTime大于tartTime!");
  } else if (thisResult == 0) {
    alert("endTime等于tartTime!");
  } else {
    return '异常';
  }
}