/** * 防抖 * @param {*} fn * @param {*} delay * @returns */ export const debounce = (fn, delay) => { let timer = null; return (...param) => { if (timer) clearTimeout(timer); timer = setTimeout(() => { fn(...param); }, delay); }; } /** * 节流 * @param {*} fn * @param {*} delay * @returns */ export const throttle = (fn, delay) => { let pre = 0; return (...params) => { let now = new Date().getTime(); console.log('相差:',now-pre) if (now - pre > delay) { fn(...params); pre = now; } }; } /** * 批量过滤对象值为空的属性 * @param {Object} val 需要过滤的对象 * @param {Array} arr 排除过滤的属性 * @returns */ export const getFilterData = (val = {}, arr = []) => { let res = {} for(let key in val) { if(val[key]!==undefined&&val[key]!==null&&val[key]!==''&&(!arr.includes(key))){ if(val[key] instanceof Number){ if(!isNaN(val[key])) { res[key] = val[key] } }else{ res[key] = val[key] } } } return res } /** * 对象深拷贝 * @param {*} object * @returns */ export const copyObject = (object)=>{ if(object.constructor==Object){ let keys = Object.keys(object); let newObject = {}; keys.map(key=>{ newObject[key]= copyObject(object[key]); }) return newObject; }else if(object.constructor==Array){ return object.map(item=>{ return copyObject(item); }) }else{ return object; } } /** * * @param {*} suffix * !w80 !w100 !w160 !w200 !w400 !w800 !wh400 !w600 */ export const screenshot = (url, suffix="!w200")=>{ return url+suffix; }