细品269个JavaScript小函数,让你少加班熬夜(五)「值得收藏」

转发链接:


203.原生js滑块验证
//:鼠标点下的点到左侧x轴的距离=function(){//事件处理onmousedownonmousemoveonmouseupvarbox=(".box")varbtn=(".btn")varbg=(".bg")vartext1=(".text")//封装的选择器声明式函数可以提升//functionfun(){////}varflag=false;//标记=function(event){vardownx=;//按下后获取的与x轴的距离=function(e){varmovex=;//滑块滑动的距离//移动的范围if(movex0){=movex+"px";=movex+"px";if(movex=){//验证成功flag=="验证成功"="MenuNavigationli").each(*function*(){​*var*w=$(*this*).innerWidth();​w_max=ww_max?w:w_max;})$("=~_-]+))*$/;(url);}复制代码
215.判断是否是小写字母
/***@description判断是否是小写字母*@paramstr*@returns{boolean}*/exportfunctionisLowerCase(str){constreg=/^[a-z]+$/;(str);}复制代码
216.判断是否是大写字母
/***@description判断是否是大写字母*@paramstr*@returns{boolean}*/exportfunctionisUpperCase(str){constreg=/^[A-Z]+$/;(str);}复制代码
217.判断是否是大写字母开头
/***@description判断是否是大写字母开头*@paramstr*@returns{boolean}*/exportfunctionisAlphabets(str){constreg=/^[A-Za-z]+$/;(str);}复制代码
218.判断是否是字符串
/***@description判断是否是字符串*@paramstr*@returns{boolean}*/exportfunctionisString(str){returntypeofstr==="string"||strinstanceofString;}复制代码
219.判断是否是数组
/***@description判断是否是数组*@paramarg*@returns{argisany[]|boolean}*/exportfunctionisArray(arg){if(==="undefined"){(arg)==="[objectArray]";}(arg);}复制代码
220.判断是否是端口号
/***@description判断是否是端口号*@paramstr*@returns{boolean}*/exportfunctionisPort(str){constreg=/^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/;(str);}复制代码
221.判断是否是手机号
/***@description判断是否是手机号*@paramstr*@returns{boolean}*/exportfunctionisPhone(str){constreg=/^1\d{10}$/;(str);}复制代码
222.判断是否是身份证号(第二代)
/***@description判断是否是身份证号(第二代)*@paramstr*@returns{boolean}*/exportfunctionisIdCard(str){constreg=/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;(str);}复制代码
223.判断是否是邮箱
/***@description判断是否是邮箱*@paramstr*@returns{boolean}*/exportfunctionisEmail(str){constreg=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;(str);}复制代码
224.判断是否中文
/***@description判断是否中文*@paramstr*@returns{boolean}*/exportfunctionisChina(str){constreg=/^[\\u4E00-\\u9FA5]{2,4}$/;(str);}复制代码
225.判断是否为空
/***@description判断是否为空*@paramstr*@returns{boolean}*/exportfunctionisBlank(str){return(str==null||false||str===""||()===""||().trim()==="null");}复制代码
226.判断是否为固话
/***@description判断是否为固话*@paramstr*@returns{boolean}*/exportfunctionisTel(str){constreg=/^(400|800)([0-9\\-]{7,10})|(([0-9]{4}|[0-9]{3})(-|)?)?([0-9]{7,8})((-||转)*([0-9]{1,4}))?$/;(str);}复制代码
227.判断是否为数字且最多两位小数
/***@description判断是否为数字且最多两位小数*@paramstr*@returns{boolean}*/exportfunctionisNum(str){constreg=/^\d+(\.\d{1,2})?$/;(str);}复制代码
228.判断经度-180.0~+180.0(整数部分为0~180,必须输入1到5位小数)
/***@description判断经度-180.0~+180.0(整数部分为0~180,必须输入1到5位小数)*@paramstr*@returns{boolean}*/exportfunctionisLongitude(str){constreg=/^[-|+]?(0?\d{1,2}\.\d{1,5}|1[0-7]?\d{1}\.\d{1,5}|180\.0{1,5})$/;(str);}复制代码
229.判断纬度-90.0~+90.0(整数部分为0~90,必须输入1到5位小数)
/***@description判断纬度-90.0~+90.0(整数部分为0~90,必须输入1到5位小数)*@paramstr*@returns{boolean}*/exportfunctionisLatitude(str){constreg=/^[-|+]?([0-8]?\d{1}\.\d{1,5}|90\.0{1,5})$/;(str);}复制代码
230.rtsp校验只要有rtsp://
/***@descriptionrtsp校验,只要有rtsp://*@paramstr*@returns{boolean}*/exportfunctionisRTSP(str){constreg=/^rtsp:\/\/([a-z]{0,10}:.{0,10}@)?(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;constreg1=/^rtsp:\/\/([a-z]{0,10}:.{0,10}@)?(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]):[0-9]{1,5}/;constreg2=/^rtsp:\/\/([a-z]{0,10}:.{0,10}@)?(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\//;(str)||(str)||(str);}复制代码
231.判断IE浏览器版本和检测是否为非IE浏览器
functionIEVersion(){varuserAgent=;//取得浏览器的userAgent字符串varisIE=("compatible")-1("MSIE")-1;//判断是否IE11浏览器varisEdge=("Edge")-1!isIE;//判断是否IE的Edge浏览器varisIE11=('Trident')-1("rv:11.0")-1;if(isIE){varreIE=newRegExp("MSIE(\\d+\\.\\d+);");(userAgent);varfIEVersion=parseFloat(RegExp["$1"]);if(fIEVersion==7){return7;}elseif(fIEVersion==8){return8;}elseif(fIEVersion==9){return9;}elseif(fIEVersion==10){return10;}else{return6;//IE版本=7}}elseif(isEdge){return'edge';//edge}elseif(isIE11){return11;//IE11}else{return-1;//不是ie浏览器}}复制代码
232.数组去重方案一:Set+
functionnoRepeat(arr){return[newSet(arr)];}noRepeat([1,2,3,1,2,3])复制代码
方案二:Set+
functionnoRepeat(arr){(newSet(arr));}noRepeat([1,2,3,1,2,3])复制代码
方案三:双重遍历比对下标
functionnoRepeat(arr){((v,idx)=idx==(v))}noRepeat([1,2,3,1,2,3])复制代码
方案四:单遍历+Object特性

Object的特性是Key不会重复。这里使用values是因为可以保留类型,keys会变成字符串。

functionnoRepeat(arr){(((s,n)={s[n]=n;returns},{}))}noRepeat([1,2,3,1,2,3])复制代码
后记

针对于上述的方案,还有其他变种实现。

233.查找数组最大方案一:+
functionarrayMax(arr){(arr);}arrayMax([-1,-4,5,2,0])复制代码
方案二:+apply
functionarrayMax(arr){(Math,arr)}arrayMax([-1,-4,5,2,0])复制代码
方案三:+遍历
functionarrayMax(arr){((s,n)=(s,n))}arrayMax([-1,-4,5,2,0])复制代码
方案四:比较、条件运算法+遍历
functionarrayMax(arr){((s,n)=sn?s:n)}arrayMax([-1,-4,5,2,0])复制代码
方案五:排序
functionarrayMax(arr){((n,m)=m-n)[0]}arrayMax([-1,-4,5,2,0])复制代码
234.查找数组最小

同上,不明白为什么要分成两个题目。

换成

sn?s:n换成`s

(n,m)=m-n换成(n,m)=n-m,或者直接取最后一个元素

235.返回已size为长度的数组分割的原数组方案一:+slice
functionchunk(arr,size=1){({length:(/size),},(v,i)=(i*size,i*size+size));}chunk([1,2,3,4,5,6,7,8],3)复制代码
方案二:+splice
functionchunk(arr,size=1){({length:(/size),},(v,i)=(0,size));}chunk([1,2,3,4,5,6,7,8],3)复制代码
方案三:遍历+splice
functionchunk(arr,size=1){var_returnArr=[];while(){_((0,size))}return_returnArr}chunk([1,2,3,4,5,6,7,8],3)复制代码
检查数组中某元素出现的次数方案一:reduce
functioncountOccurrences(arr,value){((a,v)=(v===value?a+1:a+0),0);}countOccurrences([1,2,3,4,5,1,2,1,2,3],1)复制代码
方案二:filter
functioncountOccurrences(arr,value){(v=v===value).length}countOccurrences([1,2,3,4,5,1,2,1,2,3],1)复制代码

本篇还未完结,请继续下一篇

版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。

相关推荐