Array数组数组去重函数noRepeat(arr){return[...newSet(arr)];}求最大数组函数arrayMax(arr){returnMath.max(...arr);}求最小数组函数arrayMin(arr){returnMath.min(...arr);}返回原数组除以size作为数组的长度functionchunk(arr,size=1){returnArray.from({length:Math.ceil(arr.length/size),},(v,i)=>arr.slice(i*size,i*size+size));}查看数组中某个元素出现的次数functioncountOccurrences(arr,value){returnarr.reduce((a,v)=>(v===value?a+1:a+0),0);}展平数组的默认深度完全展开functionflatten(arr,depth=-1){if(depth===-1){return[].concat(...arr.map((v)=>(Array.isArray(v)?this.flatten(v):v)));}if(depth===1){returnarr.reduce((a,v)=>a.concat(v),[]);}returnarr.reduce((a,v)=>a.concat(Array.isArray(v)?this.flatten(v,depth-1):v),[]);}比较两个数组并返回不同的元素functiondiffrence(arrA,arrB){returnarrA.filter((v)=>!arrB.includes(v));}返回两个数组相同的元素functionintersection(arr1,arr2){returnarr2.filter((v)=>arr1.includes(v));}从右边删除n个元素functiondropRight(arr,n=0){returnni%nth===nth-1);}返回数组中第n个元素支持负数functionnthElement(arr,n=0){return(n>=0?arr.slice(n,n+1):arr.slice(n))[0];}返回数组头元素functionhead(arr){returnarr[0];}returnarray最后一个元素functionlast(arr){returnarr[arr.length-1];}arrayfunctionsshuffle(arr){letarray=arr;letindex=array.length;while(index){index-=1;letrandomInedx=Math.floor(Math.random()*index);letmiddleware=array[index];array[index]=array[randomInedx];array[randomInedx]=middleware;}returnarray;}浏览器对象BOM判断浏览器是否支持CSS属性/***通知浏览器浏览器支持的指定css属性*@param{String}key-css属性,是attribute并且不需要加前缀*@returns{String}-supportedattribute*/functionvalidateCssKey(key){constjsKey=toCamelCase(key);//有些css属性由连字符构成if(jsKeyindocument.documentElement.style){returnkey;}letvalidKey="";//属性名前缀是js的形式,属性值是前缀css中的形式//经过尝试,Webkit也可以首字母小写webkitconstprefixMap={网络套件:"-webkit-",Moz:"-moz-",ms:"-ms-",O:"-o-",};for(constjsPrefixinprefixMap){conststyleKey=toCamelCase(`${jsPrefix}-${jsKey}`);if(styleKeyindocument.documentElement.style){validKey=prefixMap[jsPrefix]+key;break;}}returnvalidKey;}/***将带连字符的字符串转换为驼峰式字符串*/functiontoCamelCase(value){returnvalue.replace(/-(\w)/g,(matched,letter)=>{returnletter.toUpperCase();});}/***检查浏览器是否支持某个css属性值(es6版本)*@param{String}key-要检查的属性值的css属性名*@param{String}value-要检查的css属性值(无前缀)*@returns{String}-返回浏览器支持的属性值通过设备*/functionvaliateCssValue(key,value){constprefix=["-o-","-ms-","-moz-","-webkit-",""];constprefixValue=prefix.map((item)=>{returnitem+value;});constelement=document.createElement("div");consteleStyle=element.style;//应用每个前缀的情况,最后是没有前缀的情况,看看浏览器到底是怎么工作的//这个最好最后一个元素在前缀是''prefixValue.forEach((item)=>{eleStyle[key]=item;});returneleStyle[key];}/***查看浏览器是否支持持有一个css属性值*@param{String}key-要检查的属性值的css属性名*@param{String}value-要检查的css属性值(无前缀)*@returns{String}-返回浏览器支持的属性值*/functionvaliateCssValue(key,value){varprefix=["-o-","-ms-","-moz-","-webkit-",""];varprefixValue=[];for(vari=0;i((a[v.slice(0,v.indexOf("="")]=v.slice(v.indexOf("=")+1)),a),{});}页面跳转,是否记录历史函数redirect(url,asLink=true){asLink?(window.location.href=url):window.location.replace(url);}滚动条返回顶部动画函数crollToTop(){constscrollTop=document.documentElement.scrollTop||document.body.scrollTop;if(scrollTop>0){window.requestAnimationFrame(scrollToTop);window.scrollTo(0,c-c/8);}else{window.cancelAnimationFrame(scrollToTop);}}复制文本函数copy(str){constel=document.createElement("textarea");el.value=str;el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";el.style.top="-9999px";document.body.appendChild(el);constselected=document.getSelection().rangeCount>0?document.getSelection().getRangeAt(0):false;el.select();document.execCommand("copy");document.body.removeChild(el);if(selected){document.getSelection().removeAllRanges();document.getSelection().addRange(selected);}}检测设备类型函数detectDeviceType(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|OperaMini/i.test(navigator.userAgent)?"Mobile":"Desktop";}Cookie增加函数setCookie(key,value,expiredays){varexdate=newDate();exdate.setDate(exdate.getDate()+expiredays);document.cookie=key+"="+escape(value)+(expiredays==null?"":";expires="+exdate.toGMTString());}deletefunctiondelCookie(name){varexp=newDate();exp.setTime(exp.getTime()-1);varcval=getCookie(name);if(cval!=null){document.cookie=name+"="+cval+";expires="+exp.toGMTString();}}检查函数getCookie(name){vararr,reg=newRegExp("(^|)"+name+"=([^;]*)(;|$)");if((arr=document.cookie.match(reg))){returnarr[2];}else{returnull;}}Date日期时间戳转换为时间默认为当前时间转换结果为Ms为时间戳是否为毫秒functiontimestampToTime(timestamp=Date.parse(newDate()),是Ms=true){constdate=newDate(timestamp*(isMs?1:1000));return`${date.getFullYear()}-${date.getMonth()+1<10?"0"+(date.getMonth()+1):date.getMonth()+1}-${date.getDate()}${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;}DocumentobjectDOMfixedscrollbar/***功能描述:一些业务场景,比如出现弹框时,需要禁止页面滚动。这是兼容Android和iOS禁止页面滚动的解决方案*/letscrollTop=0;functionpreventScroll(){//存储当前滚动位置scrollTop=window.scrollY;//固定可滚动区域,可滚动区域不能滚动滚动区域高度为0后document.body.style["overflow-y"]="hidden";document.body.style.position="fixed";document.body.style.width="100%";document.body.style.top=-scrollTop+"px";//document.body.style['overscroll-behavior']='none'}functionrecoverScroll(){document.body.style["overflow-y"]="auto";document.body.style.position="static";//document.querySelector('body').style['overscroll-behavior']='none'window.scrollTo(0,scrollTop);}判断当前位置是否在页面底部返回值为true/falsefunctionbottomVisible(){return(document.documentElement.clientHeight+window.scrollY>=(document.documentElement.scrollHeight||document.documentElement.clientHeight));}判断元素在可见范围内是否完全可见。functionelementIsVisibleInViewport(el,partiallyVisible=false){const{top,left,bottom,right}=el.getBoundingClientRect();returnpartiallyVisible?((top>0&&top0&&bottom0&&left0&&right=0&&left>=0&&bottom<=innerHeight&&right<=innerWidth;}获取元素css样式函数getStyle(el,ruleName){returngetComputedStyle(el,null).getPropertyValue(ruleName);}进入全屏功能launchFullscreen(element){if(element.requestFullscreen){element.requestFullscreen();}elseif(element.mozRequestFullScreen){element.mozRequestFullScreen();}elseif(element.msRequestFullscreen){element.msRequestFullscreen();}elseif(element.webkitRequestFullscrementen){element.webkitRequestFullScreen();}}launchFullscreen(document.documentElement);launchFullscreen(document.getElementById("id"));//一个元素进入全屏和退出全屏函数exitFullscreen(){if(document.exitFullscreen){document.exitFullscreen();}elseif(document.msExitFullscreen){document.msExitFullscreen();}elseif(document.mozCancelFullScreen){document.mozCancelFullScreen();}elseif(document.webkitExitFullscreen){document.webkitExitFullscreen();}exitFullscreen();全屏事件document.addEventListener("fullscreenchange",function(e){if(document.fullscreenElement){console.log("进入全屏");}else{console.log("退出全屏screen");}});Numbernumbernumberthousanddivisionfunctioncommafy(num){returnnum.toString().indexOf(".")!==-1?num.toLocaleString():num.toString().replace(/(\d)(?=(?:\d{3})+$)/g,"$1,");}生成随机数函数randomNum(min,max){switch(arguments.length){case1:returnparseInt(Math.random()*min+1,10);case2:returnparseInt(Math.random()*(max-min+1)+min,10);default:return0;}}