2021-04-17

js 工具类

let _debounceTimeout = null,
	_throttleRunning = false

/**

 * 防抖

 * @param {Function} 执行函数

 * @param {Number} delay 延时ms   
   */
   export const debounce = (fn, delay=500) => {
   clearTimeout(_debounceTimeout);
   _debounceTimeout = setTimeout(() => {
   	fn();
   }, delay);
   }
   /**

 * 节流

 * @param {Function} 执行函数

 * @param {Number} delay 延时ms  
   */
   export const throttle = (fn, delay=500) => {
   if(_throttleRunning){
   	return;
   }
   _throttleRunning = true;
   fn();
   setTimeout(() => {
       _throttleRunning = false;
   }, delay);
   }
   /**

 * toast
   */
   export const msg = (title = '', param={}) => {
   if(!title) return;
   uni.showToast({
   	title,
   	duration: param.duration || 1500,
   	mask: param.mask || false,
   	icon: param.icon || 'none'
   });
   }
   /**

 * 检查登录

 * @return {Boolean}
   */
   export const isLogin = (options={}) => {
   const userInfo = uni.getStorageSync('userInfo');
   if(userInfo){
   	return true;
   }
   if(options.nav !== false){
   	uni.navigateTo({
   		url: '/pages/oyyl-index/login'
   	})
   }
   return false;
   }
   /**

 * 获取页面栈

 * @param {Number} preIndex为1时获取上一页

 * @return {Object} 
   */
   export const prePage = (preIndex = 1) => {
   const pages = getCurrentPages();
   const prePage = pages[pages.length - (preIndex + 1)];

   return prePage.$vm;
   }
   /**

 * 格式化时间戳 Y-m-d H:i:s

 * @param {String} format Y-m-d H:i:s

 * @param {Number} timestamp 时间戳   

 * @return {String}
   */
   export const date = (format, timeStamp) => {
   if('' + timeStamp.length <= 10){
   	timeStamp = + timeStamp * 1000;
   }else{
   	timeStamp = + timeStamp;
   }
   let _date = new Date(timeStamp),
   	Y = _date.getFullYear(),
   	m = _date.getMonth() + 1,
   	d = _date.getDate(),
   	H = _date.getHours(),
   	i = _date.getMinutes(),
   	s = _date.getSeconds();

   m = m < 10 ? '0' + m : m;
   d = d < 10 ? '0' + d : d;
   H = H < 10 ? '0' + H : H;
   i = i < 10 ? '0' + i : i;
   s = s < 10 ? '0' + s : s;

   return format.replace(/[YmdHis]/g, key=>{
   	return {Y,m,d,H,i,s}[key];
   });
   }
   //二维数组去重
   export const getUnique = array => {
   let obj = {}
   return array.filter((item, index) => {
   	let newItem = item + JSON.stringify(item)
   	return obj.hasOwnProperty(newItem) ? false : obj[newItem] = true
   })
   }
   // 判断类型集合
   export const checkStr = (str, type) => {
   switch (type) {
   	case 'mobile': //手机号码
   		return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);
   	case 'tel': //座机
   		return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);
   	case 'card': //身份证
   		return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str);
   	case 'mobileCode': //6位数字验证码
   		return /^[0-9]{6}$/.test(str)
   	case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线
   		return /^([a-zA-Z0-9_]){6,18}$/.test(str)
   	case 'payPwd': //支付密码 6位纯数字
   		return /^[0-9]{6}$/.test(str)
   	case 'postal': //邮政编码
   		return /[1-9]\d{5}(?!\d)/.test(str);
   	case 'QQ': //QQ号
   		return /^[1-9][0-9]{4,9}$/.test(str);
   	case 'email': //邮箱
   		return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);
   	case 'money': //金额(小数点2位)
   		return /^\d*(?:\.\d{0,2})?$/.test(str);
   	case 'URL': //网址
   		return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)
   	case 'IP': //IP
   		return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str);
   	case 'date': //日期时间
   		return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/
   			.test(str)
   	case 'number': //数字
   		return /^[0-9]$/.test(str);
   	case 'english': //英文
   		return /^[a-zA-Z]+$/.test(str);
   	case 'chinese': //中文
   		return /^[\\u4E00-\\u9FA5]+$/.test(str);
   	case 'lower': //小写
   		return /^[a-z]+$/.test(str);
   	case 'upper': //大写
   		return /^[A-Z]+$/.test(str);
   	case 'HTML': //HTML标记
   		return /<("[^"]*"|'[^']*'|[^'">])*>/.test(str);
   	default:
   		return true;
   }
   }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值