const util = { getStorageSync: (key) => {/*由于wx.getStorageSync有一定概率取不到值,若取不到再取一次*/ let value = wx.getStorageSync(key); if (!value) { value = wx.getStorageSync(key); } return value; }, promisify: (api) => {/*wx api使用转成Promise形式*/ return (options, ...params) => { return new Promise((resolve, reject) => { const extras = { success: resolve, fail: reject } api({ ...options, ...extras }, ...params) }) } }, filterEmoji: (s) => {/*过滤表情*/ if (s) { return s.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, ''); } return ''; }, validator: { /*校验字段合法性rule*/ checkMobile: (s) => { /*校验手机号格式是否正确*/ if (s) { s = s.toString().trim(); var rule = /^\d{3,20}$/; return rule.test(s); } return false; }, checkEmail: (s) => { /*校验邮箱格式是否正确*/ if (s) { s = s.toString().trim(); var rule = /^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g; return rule.test(s); } return false; }, checkPwd: (s) => { /*校验登录密码格式是否正确*/ if (s) { s = s.toString().trim(); var rule = /^(?=.*[a-zA-Z]+)(?=.*[0-9]+)[a-zA-Z0-9]{8,16}$/; return rule.test(s); } return false; }, checkCode: (s) => { /*校验短信或邮箱验证码格式是否正确*/ if (s) { s = s.toString().trim(); var rule = /^\d{6}$/; return rule.test(s); } return false; }, checkImgCode: (s) => { /*校验图片验证码格式是否正确*/ if (s) { s = s.toString().trim(); var rule = /^[a-zA-Z]{4}$/; return rule.test(s); } return false; }, checkNickname: (s) => { /*校验昵称格式是否正确*/ if (s) { s = s.toString().trim(); var rule = /^[A-Za-z0-9\u4e00-\u9fa5]{2,20}$/; return rule.test(s); } return false; }, }, deepClone: (obj) => {/*深度克隆对象*/ if (null === obj || 'object' !== typeof obj) { return obj; } let clone; if (obj instanceof Date) { clone = new Date(); clone.setTime(obj.getTime()); return clone; } if (obj instanceof Array) { clone = []; let i, n = obj.length; for (i = 0; i < n; i++) { clone[i] = util.deepClone(obj[i]); } return clone; } if (obj instanceof Object) { clone = {}; for (let key in obj) { if (obj.hasOwnProperty(key)) { clone[key] = util.deepClone(obj[key]); } } return clone; } throw new Error(`Unable to clone obj! Its type isn't supported.`); }, arrayRemove: (val, arr) => {/*删除数组内某个元素*/ if (!arr || !Array.isArray(arr)) { return; } arr.forEach((v, i, a) => { if (val === v) { a.splice(i, 1); } }); }, cstr: (s) => {/*处理null、undefined或NaN字符串*/ if (s) { return s.toString(); } else { return ''; } }, formatTimeCount: (t) => {/*格式化时间戳差*/ if (t > 0) { let h = Math.floor(t / 60 / 60 % 24); if (h < 10) { h = `0${h}`; } let m = Math.floor(t / 60 % 60); if (m < 10) { m = `0${m}`; } let s = Math.floor(t % 60); if (s < 10) { s = `0${s}`; } return `${h}:${m}:${s}`; } return ''; }, formatTimeStr: (t) => { if (t) { t = parseInt(t); let time = new Date(t); let year = time.getFullYear(); let month = time.getMonth() + 1; if (month < 10) { month = `0${month}`; } let date = time.getDate(); if (date < 10) { date = `0${date}`; } let hour = time.getHours(); if (hour < 10) { hour = `0${hour}`; } let minute = time.getMinutes(); if (minute < 10) { minute = `0${minute}`; } let second = time.getSeconds(); if (second < 10) { second = `0${second}`; } return `${year}-${month}-${date}`; } return ''; }, money: (m, c, w) => { /*m:金额;c:保留小数位数,只能取值0,1,2;w:1返回整个金额,2返回整数部分,3返回小数部分*/ if (c !== 0 && c !== 1 && c !== 2) { console.log('传入保留小数位数参数错误'); return ''; } if (w !== 1 && w !== 2 && w !== 3) { console.log('传入返回类型参数错误'); return ''; } if (0 === m) { /*由于0=false,需特殊处理*/ return deal('0', ''); } else { if (!m || isNaN(m)) { return ''; } m = m.toString(); if (-1 === m.indexOf('.')) { return deal(m, ''); } else { var s_arr = m.split('.'); return deal(s_arr[0], s_arr[1]); } } function deal(p, f) { /*p为整数部分*/ if (0 === c) { if (1 === w) { return p; } else if (2 === w) { return p; } else if (3 === w) { return ''; } } else if (1 === c) { if (0 === f.length) { f = '0'; } else if (f.length >= 2) { f = f.substring(0, 1); } if (1 === w) { return p + '.' + f; } else if (2 === w) { return p; } else if (3 === w) { return f; } } else if (2 === c) { if (0 === f.length) { f = '00'; } else if (1 === f.length) { f = f + '0'; } else if (f.length >= 3) { f = f.substring(0, 2); } if (1 === w) { return p + '.' + f; } else if (2 === w) { return p; } else if (3 === w) { return f; } } } }, /** * 函数防抖(只执行最后一次点击) */ debounce: (fn, delay) => { let timer = null; delay = delay || 300; return (...args) => { clearTimeout(timer); timer = setTimeout(() => { fn.apply(this, args); }, delay); }; }, /** * 函数节流 */ throttle: (fn, delay) => { let last = Date.now(); delay = delay || 300; return (...args) => { let now = Date.now(); if (now - last >= delay) { last = now; fn.apply(this, args); } }; } }; module.exports = util;