vue 常用方法封装

// 验证手机号是否合格
export function isPhone(phoneStr) {
   let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
   if (!myreg.test(phoneStr)) {
      return false;
   } else {
      return true;
   }
}

// 验证身份证号是否合格
export function isIdCard(idCardStr) {
   let idcardReg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/
   if (idcardReg.test(idCardStr)) {
      return true
   } else {
      return false
   }
}

//  验证车牌号是否合格
export function isVehicleNumber(vehicleNumber) {
   let xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
   let creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
   if (vehicleNumber.length == 7) {
      return creg.test(vehicleNumber);
   } else if (vehicleNumber.length == 8) {
      return xreg.test(vehicleNumber);
   } else {
      return false;
   }
}

// 验证字符串是否为空(也不能为纯空格)
export function isEmptyString(string) {
   if (string == undefined ||
      typeof string == "undefined" ||
      !string ||
      string == null ||
      string == '' ||
      /^\s+$/gi.test(string)) {
      return true;
   } else {
      return false;
   }
}

// 生日转为年龄( 精确到月份)
export function birsdayToAge(birsday) {
   let aDate = new Date();
   let thisYear = aDate.getFullYear();
   let bDate = new Date(birsday);
   let brith = bDate.getFullYear();
   let age = thisYear - brith;
   if (aDate.getMonth() == bDate.getMonth()) {
      if (aDate.getDate() < bDate.getDate()) {
         age = age - 1;
      }
   } else {
      if (aDate.getMonth() < bDate.getMonth()) {
         age = age - 1;
      }
   }
   return age
}

// 去除参数空数据(用于向后台传递参数的时候)
export function filterEmptyData(obj) {
   for (let prop in obj) {
      obj[prop] === '' ? delete obj[prop] : obj[prop]
   }
   return obj;
}

//判断数据是 null 和 undefined 的情况
export function getType(val) {
   if (val == null) {
      return val + "";
   }
   return typeof (val) === "object" ?
      Object.prototype.toString.call(val).slice(8, -1).toLowerCase() :
      typeof (val);
}

/**
 * @desc  函数防抖,用于多次触发,只执行 规定时间后再执行有且只有一次触发 的情况。便于优化性能
 * @param {function} func - 需要使用函数防抖的被执行的函数。必传
 * @param {Number} wait - 多少毫秒之内触发,只执行第一次,默认1000ms。可以不传
 */
export function debounce(func, wait) {
   let timeout = null
   wait = wait || 1000
   return function () {
      let context = this
      let args = arguments
      if (timeout) clearTimeout(timeout)
      let callNow = !timeout
      timeout = setTimeout(() => {
         timeout = null
      }, wait)
      if (callNow) func.apply(context, args)
   }
}

/**
 * 节流函数, 用于将多次执行变为每隔一段时间执行
 * @param fn 事件触发的操作
 * @param delay 间隔多少毫秒需要触发一次事件
 */
export function throttle2(fn, delay) {
   let timer = null;
   return function () {
      let context = this;
      let args = arguments;
      if (!timer) {
         timer = setTimeout(function () {
            fn.apply(context, args);
            clearTimeout(timer);
         }, delay);
      }
   };
}

// 时间戳转化成日期格式
export function timesSeconds(timestamp) {
   if (!timestamp) {
      return;
   }
   var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
   const Y = date.getFullYear() + "-";
   const M =
      (date.getMonth() + 1 < 10 ?
         "0" + (date.getMonth() + 1) :
         date.getMonth() + 1) + "-";
   const D = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
   var h = null;
   var m = null;
   var s = null;
   if (date.getHours()) {
      h = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
   } else {
      h = "00";
   }
   if (date.getMinutes()) {
      m =
         date.getMinutes() < 10 ?
         ":" + "0" + date.getMinutes() :
         ":" + date.getMinutes();
   } else {
      m = ":00";
   }
   if (date.getSeconds()) {
      s =
         date.getSeconds() < 10 ?
         ":" + "0" + date.getSeconds() :
         ":" + date.getSeconds();
   } else {
      s = ":00";
   }
   return Y + M + D + "\xa0\xa0\xa0" + h + m + s;
}

// 数组扁平化
export function flatten(arr) {
   return arr.reduce((result, item) => {
      return result.concat(Array.isArray(item) ? flatten(item) : item)
   }, [])
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值