// -防抖 export function debounce(fn: Function, wait: number) { let delay = wait || 500 let timer: any = null; return function () { let args = arguments; if (timer) { clearTimeout(timer) console.log('debounce') } let callNow = !timer timer = setTimeout(() => { console.log('debounce send') timer = null }, delay) if (callNow) fn.apply(null, args) } } // -节流 export function throttle(fn: Function, wait: number) { let delay = wait || 500 let timer: any = null; return function () { if (timer) { console.log('throttle'); return } timer = setTimeout(() => { console.log('throttle send'); fn.apply(null, arguments) timer = null }, delay) } } //计算坐标距离 export function calcMapDistance(lat1: number, lng1: number, lat2: number, lng2: number) { let radLat1 = (lat1 * Math.PI) / 180.0; let radLat2 = (lat2 * Math.PI) / 180.0; let a = radLat1 - radLat2; let b = (lng1 * Math.PI) / 180.0 - (lng2 * Math.PI) / 180.0; let s = 2 * Math.asin( Math.sqrt( Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2) ) ); s = s * 6378.137; // EARTH_RADIUS; s = Math.round(s * 10000) / 10000; return s.toFixed(2); } export function groupByKey(elements: Array, key: string) { return elements.reduce((groups, item) => { const groupKey = item[key]; if (!groups[groupKey]) { groups[groupKey] = []; } groups[groupKey].push(item); return groups; }, {}); } export function getDictName(code:string, value: string) { let dictStorage:any = uni.getStorageSync('dict'); console.log(dictStorage) if(!dictStorage){ return value; } let elements = dictStorage[code]; if(elements){ let ele = elements.find((k: any)=>k.value===value); if(ele){ return ele.name; } } return value; }