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


目录

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

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

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

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

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

细品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)复制代码

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

推荐JavaScript经典实例学习资料文章

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

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

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

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

《深入JavaScript教你内存泄漏如何防范》

《手把手教你7个有趣的JavaScript项目-上「附源码」》

《手把手教你7个有趣的JavaScript项目-下「附源码」》

《JavaScript使用mediaDevicesAPI访问摄像头自拍》

《手把手教你前端代码如何做错误上报「JS篇」》

《一文让你彻底搞懂移动前端和Web前端区别在哪里》

《63个JavaScript正则大礼包「值得收藏」》

《提高你的JavaScript技能10个问答题》

《JavaScript图表库的5个首选》

《一文彻底搞懂JavaScript中与的用法》

《可视化的JS:动态图演示-事件循环EventLoop的过程》

《教你如何用动态规划和贪心算法实现前端瀑布流布局「实践」》

《可视化的js:动态图演示PromisesAsync/Await的过程》

《原生JS封装拖动验证滑块你会吗?「实践」》

《如何实现高性能的在线PDF预览》

《细说使用字体库加密数据-仿58同城》

《要完了吗?》

《正式发布,不再支持/8》

《纯JS手写轮播图(代码逻辑清晰,通俗易懂)》

《JavaScript20年中文版之创立标准》

《值得收藏的前端常用60余种工具方法「JS篇」》

《箭头函数和常规函数之间的5个区别》

《通过发布/订阅的设计模式搞懂核心模块Events》

《「前端篇」不再为正则烦恼》

《「速围」发布支持顶级Await和REPL增强功能》

《深入细品浏览器原理「流程图」》

《JavaScript已进入第三个时代,未来将何去何从?》

《前端上传前预览文件image、text、json、video、audio「实践」》

《深入细品EventLoop和浏览器渲染、帧动画、空闲回调的关系》

《推荐13个有用的JavaScript数组技巧「值得收藏」》

《前端必备基础知识:详解》

《不要再依赖CommonJS了》

《犀牛书作者:最该忘记的JavaScript特性》

《36个工作中常用的JavaScript函数片段「值得收藏」》

《Node+H5实现大文件分片上传、断点续传》

《一文了解文件上传全过程(1.8w字深度解析)「前端进阶必备」》

《【实践总结】关于小程序挣脱枷锁实现批量上传》

《手把手教你前端的各种文件上传攻略和大文件断点续传》

《字节跳动面试官:请你实现一个大文件上传和断点续传》

《谈谈前端关于文件上传下载那些事【实践】》

《手把手教你如何编写一个前端图片压缩、方向纠正、预览、上传插件》

《最全的JavaScript模块化方案和工具》

《「前端进阶」JS中的内存管理》

《JavaScript正则深入以及10个非常有意思的正则实战》

《前端面试者经常忽视的一道JavaScript面试题》

《一行JS代码实现一个简单的模板字符串替换「实践」》

《JS代码是如何被压缩的「前端高级进阶」》

《前端开发规范:命名规范、html规范、css规范、js规范》

《【规范篇】前端团队代码规范最佳实践》

《100个原生JavaScript代码片段知识点详细汇总【实践】》

《关于前端174道JavaScript知识点汇总(一)》

《关于前端174道JavaScript知识点汇总(二)》

《关于前端174道JavaScript知识点汇总(三)》

《几个非常有意思的javascript知识点总结【实践】》

《都2020年了,你还不会JavaScript装饰器?》

《JavaScript实现图片合成下载》

《70个JavaScript知识点详细总结(上)【实践】》

《70个JavaScript知识点详细总结(下)【实践】》

《开源了一个JavaScript版敏感词过滤库》

《送你43道JavaScript面试题》

《3个很棒的小众JavaScript库,你值得拥有》

《手把手教你深入巩固JavaScript知识体系【思维导图】》

《推荐7个很棒的JavaScript产品步骤引导库》

《Echa哥教你彻底弄懂JavaScript执行机制》

《一个合格的中级前端工程师需要掌握的28个JavaScript技巧》

《深入解析高频项目中运用到的知识点汇总【JS篇】》

《JavaScript工具函数大全【新】》

《从JavaScript中看设计模式(总结)》

《身份证号码的正则表达式及验证详解(JavaScript,Regex)》

《浏览器中实现JavaScript计时器的4种创新方式》

《动效方案》

《手把手教你常用的59个JS类方法》

《127个常用的JS代码片段,每段代码花30秒就能看懂-【上】》

《深入浅出讲解js深拷贝vs浅拷贝》

《手把手教你JS开发H5游戏【消灭星星】》

《深入浅出讲解JS中this/apply/call/bind巧妙用法【实践】》

《手把手教你全方位解读JS中this真正含义【实践】》

《书到用时方恨少,一大波JS开发工具函数来了》

《干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)》

《手把手教你JS异步编程六种方案【实践】》

《让你减少加班的15条高效JS技巧知识点汇总【实践】》

《手把手教你JS开发H5游戏【黄金矿工】》

《手把手教你JS实现监控浏览器上下左右滚动》

《JS经典实例知识点整理汇总【实践】》

《2.6万字JS干货分享,带你领略前端魅力【基础篇】》

《2.6万字JS干货分享,带你领略前端魅力【实践篇】》

《简单几步让你的JS写得更漂亮》

《恭喜你获得治疗JSthis的详细药方》

《谈谈前端关于文件上传下载那些事【实践】》

《面试中教你绕过关于JavaScript作用域的5个坑》

《Jquery插件(常用的插件库)》

《【JS】如何防止重复发送ajax请求》

《JavaScript+Canvas实现自定义画板》

《Continuation在JS中的应用「前端篇」》


作者:叫我詹躲躲
转发链接:

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

相关推荐