当前位置: 首页 > Web前端 > JavaScript

js常用效用函数

时间:2023-03-27 15:00:02 JavaScript

//防抖功能,使用场景:防止多次点击按钮,调整浏览器过于频繁,抬起键盘constdebounce=(()=>{lettimer=null;return(callback,time=800)=>{timer&&clearTimeout(timer)timer=setTimeout(callback,ti??me);}})()//使用示例:btn.addEventListener("click",function(){debounce(()=>{XXX逻辑码XX},2000)})//节流函数,constthrottle=(()=>{letlast=0;return(callback,time=800)=>{letnow=+newDate()if(now-last>time){callback();last=now;}}})()//数组对象去重constuniqueArrayObject=(arr=[],key="id")=>{if(arr.length==0)returnfalse;让map={}arr.forEach(element=>{if(!map[element[key]]){map[element[key]]=element}});returnObject.values(map)}//判断数据类型consttypeOf=obj=>Object.prototype.toString.call(obj).slice(8,-1)//滚动到页面顶部constscrollTop=()=>{让高度=document.documentElement.scrollTop||文档.body.scrollTop;if(height>10){window.requestAnimationFrame(scrollTop)window.scrollTo(height,height/8)}}//滚动到固定位置constscrollElement=el=>{document.querySelector(el).scrollIntoView({behavior:'smooth'})}//获取当前时间constgetTime=(date=newDate())=>{lety=date.getFullYear();让m=date.getMonth()+1;m=m<10?'0'+m:m;让d=date.getDate()d=d<10?"0"+d:d;returny+'/'+m+'/'+d}//获取月份的第一天和最后一天constgetFirstLastDay=()=>{letnow=newDate()lety=now.getFullYear();让m=now.getMonth();让firstDay=newDate(y,m,1)让lastDay=newDate(y,m+1,0)firstDay=firstDay.getMonth+1+'/'+'0'+firstDay.getDate()lastDay=lastDay.getMonth+1+'/'+lastDay.getDate();return{firstDay,lastDay}}//模糊查询constsearchQuery=(list=[],keyword,attr='name')=>{letreg=newRegExp(keyword)letarr=[]list.forEach(i=>{if(reg.test(i[attr])){arr.push(i)}})returnarr;}letcommonFun={debounce,throttle,uniqueArrayObject,typeOf,scrollTop,scrollElement,getTime,getFirstLastDay,searchQuery}window.共同乐趣=共同乐趣