vue中常用60余種工具類

1.郵箱

exportconstisEmail=(s)=>{return/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)}

2.手機號碼

exportconstisMobile=(s)=>{return/^1[0-9]{10}$/.test(s)}

3.電話號碼

exportconstisPhone=(s)=>{return/^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)}

4.是否url地址

exportconstisURL=(s)=>{return/^http[s]?:\/\/.*/.test(s)}

5.是否字符串

exportconstisString=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='String'}

6.是否數(shù)字

exportconstisNumber=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='Number'}

7.是否boolean

exportconstisBoolean=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='Boolean'}

8.是否函數(shù)

exportconstisFunction=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='Function'}

9.是否為null

exportconstisNull=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='Null'}

10.是否undefined

exportconstisUndefined=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='Undefined'}

11.是否對象

exportconstisObj=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='Object'}

12.是否數(shù)組

exportconstisArray=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='Array'}

13.是否時間

exportconstisDate=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='Date'}

14.是否正則

exportconstisRegExp=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='RegExp'}

15.是否錯誤對象

exportconstisError=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='Error'}

16.是否Symbol函數(shù)

exportconstisSymbol=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='Symbol'}

17.是否Promise對象

exportconstisPromise=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='Promise'}

18.是否Set對象

exportconstisSet=(o)=>{returnObject.prototype.toString.call(o).slice(8,-1)==='Set'}exportconstua=navigator.userAgent.toLowerCase();

19.是否是微信瀏覽器

exportconstisWeiXin=()=>{returnua.match(/microMessenger/i)=='micromessenger'}

20.是否是移動端

exportconstisDeviceMobile=()=>{return/android|webos|iphone|ipod|balckberry/i.test(ua)}

21.是否是QQ瀏覽器

exportconstisQQBrowser=()=>{return!!ua.match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i)}

22.是否是爬蟲

export const isSpider=()=>{return/adsbot|googlebot|bingbot|msnbot|yandexbot|baidubot|robot|careerbot|seznambot|bot|baiduspider|jikespider|symantecspider|scannerlwebcrawler|crawler|360spider|sosospider|sogou web sprider|sogou orion spider/.test(ua)}

23.是否ios

exportconstisIos=()=>{varu=navigator.userAgent;if(u.indexOf('Android')>-1||u.indexOf('Linux')>-1){//安卓手機returnfalse}elseif(u.indexOf('iPhone')>-1){//蘋果手機returntrue}elseif(u.indexOf('iPad')>-1){//iPadreturnfalse}elseif(u.indexOf('Windows Phone')>-1){//winphone手機returnfalse}else{returnfalse}}

24.是否為PC端

exportconstisPC=()=>{varuserAgentInfo=navigator.userAgent;varAgents=["Android","iPhone","SymbianOS","Windows Phone","iPad","iPod"];varflag=true;for(varv=0;v<Agents.length;v++){if(userAgentInfo.indexOf(Agents[v])>0){flag=false;break;}}returnflag;}

25.去除html標簽

exportconstremoveHtmltag=(str)=>{returnstr.replace(/<[^>]+>/g,'')}

26.獲取url參數(shù)

exportconstgetQueryString=(name)=>{constreg=newRegExp('(^|&)'+name+'=([^&]*)(&|$)','i');constsearch=window.location.search.split('?')[1]||'';constr=search.match(reg)||[];returnr[2];}

27.動態(tài)引入js

exportconstinjectScript=(src)=>{consts=document.createElement('script');s.type='text/javascript';s.async=true;s.src=src;constt=document.getElementsByTagName('script')[0];t.parentNode.insertBefore(s,t);}

28.根據(jù)url地址下載

exportconstdownload=(url)=>{varisChrome=navigator.userAgent.toLowerCase().indexOf('chrome')>-1;varisSafari=navigator.userAgent.toLowerCase().indexOf('safari')>-1;if(isChrome||isSafari){varlink=document.createElement('a');link.href=url;if(link.download!==undefined){varfileName=url.substring(url.lastIndexOf('/')+1,url.length);link.download=fileName;}if(document.createEvent){vare=document.createEvent('MouseEvents');e.initEvent('click',true,true);link.dispatchEvent(e);returntrue;}}if(url.indexOf('?')===-1){url+='?download';}window.open(url,'_self');returntrue;}

29.el是否包含某個class

export const hasClass = (el, className) => {

let reg = new RegExp('(^|\s)' + className + '(\s|$)')

return reg.test(el.className)

}

30.el添加某個class

exportconstaddClass=(el,className)=>{if(hasClass(el,className)){return}letnewClass=el.className.split(' ')newClass.push(className)el.className=newClass.join(' ')}

31.el去除某個class

exportconstremoveClass=(el,className)=>{if(!hasClass(el,className)){return}letreg=newRegExp('(^|\\s)'+className+'(\\s|$)','g')el.className=el.className.replace(reg,' ')}

32.獲取滾動的坐標

exportconstgetScrollPosition=(el=window)=>({x:el.pageXOffset!==undefined?el.pageXOffset:el.scrollLeft,y:el.pageYOffset!==undefined?el.pageYOffset:el.scrollTop});

33.滾動到頂部

exportconstscrollToTop=()=>{constc=document.documentElement.scrollTop||document.body.scrollTop;if(c>0){window.requestAnimationFrame(scrollToTop);window.scrollTo(0,c-c/8);}}

34.el是否在視口范圍內

export const elementIsVisibleInViewport=(el,partiallyVisible=false)=>{const{top,left,bottom,right}=el.getBoundingClientRect();const{innerHeight,innerWidth}=window;returnpartiallyVisible?((top>0&&top<innerHeight)||(bottom>0&&bottom<innerHeight))&&((left>0&&left<innerWidth)||(right>0&&right<innerWidth)):top>=0&&left>=0&&bottom<=innerHeight&&right<=innerWidth;}

35.洗牌算法隨機

exportconstshuffle=(arr)=>{varresult=[],random;while(arr.length>0){random=Math.floor(Math.random()*arr.length);result.push(arr[random])arr.splice(random,1)}returnresult;}

36.攔截粘貼板

exportconstcopyTextToClipboard=(value)=>{vartextArea=document.createElement("textarea");textArea.style.background='transparent';textArea.value=value;document.body.appendChild(textArea);textArea.select();try{varsuccessful=document.execCommand('copy');}catch(err){console.log('Oops, unable to copy');}document.body.removeChild(textArea);}

37.判斷類型集合

exportconstcheckStr=(str,type)=>{switch(type){case'phone'://手機號碼return/^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);case'tel'://座機return/^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);case'card'://身份證return/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str);case'pwd'://密碼以字母開頭,長度在6~18之間,只能包含字母、數(shù)字和下劃線return/^[a-zA-Z]\w{5,17}$/.test(str)case'postal'://郵政編碼return/[1-9]\d{5}(?!\d)/.test(str);case'QQ'://QQ號return/^[1-9][0-9]{4,9}$/.test(str);case'email'://郵箱return/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);case'money'://金額(小數(shù)點2位)return/^\d*(?:\.\d{0,2})?$/.test(str);case'URL'://網(wǎng)址return/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)case'IP'://IPreturn/((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str);case'date'://日期時間return/^(\d{4})\-(\d{2})\-(\d{2})(\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str)||/^(\d{4})\-(\d{2})\-(\d{2})$/.test(str)case'number'://數(shù)字return/^[0-9]$/.test(str);case'english'://英文return/^[a-zA-Z]+$/.test(str);case'chinese'://中文return/^[\\u4E00-\\u9FA5]+$/.test(str);case'lower'://小寫return/^[a-z]+$/.test(str);case'upper'://大寫return/^[A-Z]+$/.test(str);case'HTML'://HTML標記return/<("[^"]*"|'[^']*'|[^'">])*>/.test(str);default:returntrue;}}

38.嚴格的身份證校驗

exportconstisCardID=(sId)=>{if(!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)){console.log('你輸入的身份證長度或格式錯誤')returnfalse}//身份證城市varaCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32:"江蘇",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東",41:"河南",42:"湖北",43:"湖南",44:"廣東",45:"廣西",46:"海南",50:"重慶",51:"四川",52:"貴州",53:"云南",54:"西藏",61:"陜西",62:"甘肅",63:"青海",64:"寧夏",65:"新疆",71:"臺灣",81:"香港",82:"澳門",91:"國外"};if(!aCity[parseInt(sId.substr(0,2))]){console.log('你的身份證地區(qū)非法')returnfalse}// 出生日期驗證varsBirthday=(sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2))).replace(/-/g,"/"),d=newDate(sBirthday)if(sBirthday!=(d.getFullYear()+"/"+(d.getMonth()+1)+"/"+d.getDate())){console.log('身份證上的出生日期非法')returnfalse}// 身份證號碼校驗varsum=0,weights=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],codes="10X98765432"for(vari=0;i<sId.length-1;i++){sum+=sId[i]*weights[i];}varlast=codes[sum%11];//計算出來的最后一位身份證號碼if(sId[sId.length-1]!=last){console.log('你輸入的身份證號非法')returnfalse}returntrue}

39.隨機數(shù)范圍

exportconstrandom=(min,max)=>{if(arguments.length===2){returnMath.floor(min+Math.random()*((max+1)-min))}else{returnnull;}}

40.將阿拉伯數(shù)字翻譯成中文的大寫數(shù)字

exportconstnumberToChinese=(num)=>{varAA=newArray("零","一","二","三","四","五","六","七","八","九","十");varBB=newArray("","十","百","仟","萬","億","點","");vara=(""+num).replace(/(^0*)/g,"").split("."),k=0,re="";for(vari=a[0].length-1;i>=0;i--){switch(k){case0:re=BB[7]+re;break;case4:if(!newRegExp("0{4}//d{"+(a[0].length-i-1)+"}$").test(a[0]))re=BB[4]+re;break;case8:re=BB[5]+re;BB[7]=BB[5];k=0;break;}if(k%4==2&&a[0].charAt(i+2)!=0&&a[0].charAt(i+1)==0)re=AA[0]+re;if(a[0].charAt(i)!=0)re=AA[a[0].charAt(i)]+BB[k%4]+re;k++;}if(a.length>1)// 加上小數(shù)部分(如果有小數(shù)部分){re+=BB[6];for(vari=0;i<a[1].length;i++)re+=AA[a[1].charAt(i)];}if(re=='一十')re="十";if(re.match(/^一/)&&re.length==3)re=re.replace("一","");returnre;}

41.將數(shù)字轉換為大寫金額

exportconstchangeToChinese=(Num)=>{//判斷如果傳遞進來的不是字符的話轉換為字符if(typeof Num=="number"){Num=newString(Num);};Num=Num.replace(/,/g,"")//替換tomoney()中的“,”Num=Num.replace(//g,"")//替換tomoney()中的空格Num=Num.replace(/¥/g,"")//替換掉可能出現(xiàn)的¥字符if(isNaN(Num)){//驗證輸入的字符是否為數(shù)字//alert("請檢查小寫金額是否正確");return"";};//字符處理完畢后開始轉換,采用前后兩部分分別轉換varpart=String(Num).split(".");varnewchar="";//小數(shù)點前進行轉化for(vari=part[0].length-1;i>=0;i--){if(part[0].length>10){return"";//若數(shù)量超過拾億單位,提示}vartmpnewchar=""varperchar=part[0].charAt(i);switch(perchar){case"0":tmpnewchar="零"+tmpnewchar;break;case"1":tmpnewchar="壹"+tmpnewchar;break;case"2":tmpnewchar="貳"+tmpnewchar;break;case"3":tmpnewchar="叁"+tmpnewchar;break;case"4":tmpnewchar="肆"+tmpnewchar;break;case"5":tmpnewchar="伍"+tmpnewchar;break;case"6":tmpnewchar="陸"+tmpnewchar;break;case"7":tmpnewchar="柒"+tmpnewchar;break;case"8":tmpnewchar="捌"+tmpnewchar;break;case"9":tmpnewchar="玖"+tmpnewchar;break;}switch(part[0].length-i-1){case0:tmpnewchar=tmpnewchar+"元";break;case1:if(perchar!=0)tmpnewchar=tmpnewchar+"拾";break;case2:if(perchar!=0)tmpnewchar=tmpnewchar+"佰";break;case3:if(perchar!=0)tmpnewchar=tmpnewchar+"仟";break;case4:tmpnewchar=tmpnewchar+"萬";break;case5:if(perchar!=0)tmpnewchar=tmpnewchar+"拾";break;case6:if(perchar!=0)tmpnewchar=tmpnewchar+"佰";break;case7:if(perchar!=0)tmpnewchar=tmpnewchar+"仟";break;case8:tmpnewchar=tmpnewchar+"億";break;case9:tmpnewchar=tmpnewchar+"拾";break;}varnewchar=tmpnewchar+newchar;}//小數(shù)點之后進行轉化if(Num.indexOf(".")!=-1){if(part[1].length>2){// alert("小數(shù)點之后只能保留兩位,系統(tǒng)將自動截斷");part[1]=part[1].substr(0,2)}for(i=0;i<part[1].length;i++){tmpnewchar=""perchar=part[1].charAt(i)switch(perchar){case"0":tmpnewchar="零"+tmpnewchar;break;case"1":tmpnewchar="壹"+tmpnewchar;break;case"2":tmpnewchar="貳"+tmpnewchar;break;case"3":tmpnewchar="叁"+tmpnewchar;break;case"4":tmpnewchar="肆"+tmpnewchar;break;case"5":tmpnewchar="伍"+tmpnewchar;break;case"6":tmpnewchar="陸"+tmpnewchar;break;case"7":tmpnewchar="柒"+tmpnewchar;break;case"8":tmpnewchar="捌"+tmpnewchar;break;case"9":tmpnewchar="玖"+tmpnewchar;break;}if(i==0)tmpnewchar=tmpnewchar+"角";if(i==1)tmpnewchar=tmpnewchar+"分";newchar=newchar+tmpnewchar;}}//替換所有無用漢字while(newchar.search("零零")!=-1)newchar=newchar.replace("零零","零");newchar=newchar.replace("零億","億");newchar=newchar.replace("億萬","億");newchar=newchar.replace("零萬","萬");newchar=newchar.replace("零元","元");newchar=newchar.replace("零角","");newchar=newchar.replace("零分","");if(newchar.charAt(newchar.length-1)=="元"){newchar=newchar+"整"}returnnewchar;}

42.判斷一個元素是否在數(shù)組中

exportconstcontains=(arr,val)=>{returnarr.indexOf(val)!=-1?true:false;}

43.數(shù)組排序,{type} 1:從小到大 2:從大到小 3:隨機

exportconstsort=(arr,type=1)=>{returnarr.sort((a,b)=>{switch(type){case1:returna-b;case2:returnb-a;case3:returnMath.random()-0.5;default:returnarr;}})}

44.去重

exportconstunique=(arr)=>{if(Array.hasOwnProperty('from')){returnArray.from(newSet(arr));}else{varn={},r=[];for(vari=0;i<arr.length;i++){if(!n[arr[i]]){n[arr[i]]=true;r.push(arr[i]);}}returnr;}}

45.求兩個集合的并集

exportconstunion=(a,b)=>{varnewArr=a.concat(b);returnthis.unique(newArr);}

46.求兩個集合的交集

exportconstintersect=(a,b)=>{var_this=this;a=this.unique(a);returnthis.map(a,function(o){return_this.contains(b,o)?o:null;});}

47.刪除其中一個元素

exportconstremove=(arr,ele)=>{varindex=arr.indexOf(ele);if(index>-1){arr.splice(index,1);}returnarr;}

48.將類數(shù)組轉換為數(shù)組

``

export const formArray = (ary) => {

var arr = [];

if (Array.isArray(ary)) {

arr = ary;

} else {

arr = Array.prototype.slice.call(ary);

};

return arr;

}

49.最大值

export const max = (arr) => {

return Math.max.apply(null, arr);

}

50.最小值

export const min = (arr) => {

return Math.min.apply(null, arr);

}

51.求和

export const sum = (arr) => {

return arr.reduce((pre, cur) => {

return pre + cur

})

}

52.平均值

export const average = (arr) => {

return this.sum(arr) / arr.length

}

53.去除空格,type: 1-所有空格 2-前后空格 3-前空格 4-后空格

export const trim = (str, type) => {

type = type || 1

switch (type) {

case 1:

return str.replace(/\s+/g, "");

case 2:

return str.replace(/(^\s)|(\s

)/g, "");

default:

return str;

}

}

54.字符轉換,type: 1:首字母大寫 2:首字母小寫 3:大小寫轉換 4:全部大寫 5:全部小寫

export const changeCase = (str, type) => {

type = type || 4

switch (type) {

case 1:

return str.replace(/\b\w+\b/g, function (word) {

return word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase();

});case2:returnstr.replace(/\b\w+\b/g,function(word){returnword.substring(0,1).toLowerCase()+word.substring(1).toUpperCase();});case3:returnstr.split('').map(function(word){if(/[a-z]/.test(word)){returnword.toUpperCase();}else{returnword.toLowerCase()}}).join('')case4:returnstr.toUpperCase();case5:returnstr.toLowerCase();default:returnstr;}

}

55.檢測密碼強度

export const checkPwd = (str) => {

var Lv = 0;

if (str.length < 6) {

return Lv

}

if (/[0-9]/.test(str)) {

Lv++

}

if (/[a-z]/.test(str)) {

Lv++

}

if (/[A-Z]/.test(str)) {

Lv++

}

if (/[.|-|_]/.test(str)) {

Lv++

}

return Lv;

}

56.函數(shù)節(jié)流器

export const debouncer = (fn, time, interval = 200) => {

if (time - (window.debounceTimestamp || 0) > interval) {

fn && fn();

window.debounceTimestamp = time;

}

}

57.在字符串中插入新字符串

export const insertStr = (soure, index, newStr) => {

var str = soure.slice(0, index) + newStr + soure.slice(index);

return str;

}

58.判斷兩個對象是否鍵值相同

export const isObjectEqual = (a, b) => {

var aProps = Object.getOwnPropertyNames(a);

var bProps = Object.getOwnPropertyNames(b);

if(aProps.length!==bProps.length){returnfalse;}for(vari=0;i<aProps.length;i++){varpropName=aProps[i];if(a[propName]!==b[propName]){returnfalse;}}returntrue;

}

59.16進制顏色轉RGBRGBA字符串

export const colorToRGB = (val, opa) => {

varpattern=/^(#?)[a-fA-F0-9]{6}$/;//16進制顏色值校驗規(guī)則varisOpa=typeofopa=='number';//判斷是否有設置不透明度if(!pattern.test(val)){//如果值不符合規(guī)則返回空字符return'';}varv=val.replace(/#/,'');//如果有#號先去除#號varrgbArr=[];varrgbStr='';for(vari=0;i<3;i++){varitem=v.substring(i*2,i*2+2);varnum=parseInt(item,16);rgbArr.push(num);}rgbStr=rgbArr.join();rgbStr='rgb'+(isOpa?'a':'')+'('+rgbStr+(isOpa?','+opa:'')+')';returnrgbStr;

}

60.追加url參數(shù)

export const appendQuery = (url, key, value) => {

var options = key;

if (typeof options == 'string') {

options = {};

options[key] = value;

}

options = $.param(options);

if (url.includes('?')) {

url += '&' + options

} else {

url += '?' + options

}

return url;

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容