Js查找字符串中出現(xiàn)次數(shù)最多的字符及個(gè)數(shù)實(shí)例解析
如sssfgtdfssddfsssfssss,出現(xiàn)最多的字符是s,出現(xiàn)了12次
傳統(tǒng)寫(xiě)法
分析:
1.準(zhǔn)備一個(gè)空的json,通過(guò)循環(huán)字符串的每個(gè)字符來(lái)看,如果json里沒(méi)有這個(gè)字符,就在json里創(chuàng)建一個(gè)新的數(shù)組,并把這個(gè)字符放進(jìn)數(shù)組里,如果json里有這個(gè)字符,繼續(xù)把字符添加進(jìn)數(shù)組里,這時(shí)循環(huán)完json里有n個(gè)數(shù)組
2.找出json里長(zhǎng)度最長(zhǎng)的數(shù)組,此時(shí)長(zhǎng)度即個(gè)數(shù),而最多的字符就是這個(gè)參數(shù),用到for...in...循環(huán)和參數(shù)attr
var str="sssfgtdfssddfsssfssss"; function max(){ var json={}; var num=0; var value=null; for(var i=0;i<str.length;i++){ var k=str[i]; if(!json[k]){ json[k]=[]; } json[k].push(k); //這里不需要else,否則只有存在這個(gè)字符時(shí)才添加。次數(shù)會(huì)少一次 } for(var attr in json){ if(num<json[attr].length){ num=json[attr].length; value=json[attr][0]; } } alert("出現(xiàn)最多的字符是:"+value+',出現(xiàn)次數(shù)是:'+num); }; max(str);
如果不想往json里放東西怎么做呢?
分析:
1.準(zhǔn)備一個(gè)空的json,通過(guò)循環(huán)字符串的每個(gè)字符來(lái)看,如果json里沒(méi)有這個(gè)字符,就把這個(gè)字符的數(shù)目設(shè)為1,如果有則數(shù)目++
2.循環(huán)json里的字符,只要存在,就把他的數(shù)目賦給一個(gè)變量,并且每次都比較新的字符數(shù)量和這個(gè)變量的大小,如果比變量大,則更新變量的值,最后這個(gè)變量的值就是最多字符的數(shù)目
而最多的字符就是json里這個(gè)字符
var str="sssfgtdfssddfsssfssss"; function max(){ var json={}; for(var i=0;i<str.length;i++){ var k=str[i]; //k是所有字符,字符串也跟數(shù)組一樣可以通過(guò)中括號(hào)下標(biāo)方法取到每個(gè)子元素 if(json[k]){ json[k]++; //json里有這個(gè)字符時(shí),把這個(gè)字符的數(shù)量+1, } else{ json[k]=1; //否則把這個(gè)字符的數(shù)量設(shè)為1 } } var num=0; var value=null; for(var k in json){ //s、f、g、t、d if(json[k]>num){ num=json[k]; value=k; } } alert("出現(xiàn)最多的字符是:"+value+',出現(xiàn)次數(shù)是:'+num); }; max(str);
正則的方法
分析:
1.字符串轉(zhuǎn)為數(shù)組進(jìn)行排序,以便正則選出相同的挨在一起的字符
2.通過(guò)正則replace()方法的兩個(gè)參數(shù),來(lái)匹配出現(xiàn)最多的字符和數(shù)量
var str="sssfgtdfssddfsssfssss"; var num=0; var value=null; function max(){ var new_str=str.split("").sort().join(""); var re=/(\w)\1+/g; //沒(méi)有\(zhòng)1,re就是一整個(gè)排好序的字符串,有了\1就是出現(xiàn)過(guò)的有重復(fù)的取出來(lái),\1表示跟前面第一個(gè)子項(xiàng)是相同的 new_str.replace(re,function($0,$1){ //$0代表取出來(lái)重復(fù)的一個(gè)個(gè)整體,如[s,s...],[f,f..],[d,d....] $1代表這個(gè)整體里的字符 if(num<$0.length){ num=$0.length; value=$1 } }); alert(value+":"+num) }; max(str);
相關(guān)文章
被jQuery折騰得半死,揭秘為何jQuery為何在IE/Firefox下均無(wú)法使用
某學(xué)員前日實(shí)施一個(gè)Web項(xiàng)目實(shí)施發(fā)生了悲劇,找到我求解決,把我也折騰個(gè)半死。2010-01-01- 本文介紹了使用javascript判斷整數(shù)的2種方法中的一種正則判斷,因?yàn)橹鹱峙袛嘈侍拖铝?,有相同需求的小伙伴們參考?/div> 2014-12-12
js Math數(shù)學(xué)簡(jiǎn)單使用操作示例
這篇文章主要介紹了js Math數(shù)學(xué)簡(jiǎn)單使用,結(jié)合實(shí)例形式分析了js Math數(shù)學(xué)相關(guān)函數(shù)的基本用法與操作注意事項(xiàng),需要的朋友可以參考下2020-03-03uni-app如何頁(yè)面?zhèn)鲄?shù)的幾種方法總結(jié)
這篇文章主要介紹了uni-app如何頁(yè)面?zhèn)鲄?shù)的幾種方法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04el-table動(dòng)態(tài)渲染列、可編輯單元格、虛擬無(wú)縫滾動(dòng)的實(shí)現(xiàn)
vue對(duì)數(shù)據(jù)處理很常見(jiàn),本文主要介紹了對(duì)el-table組件二次封裝,包括對(duì)el-table的動(dòng)態(tài)渲染、單元格編輯;對(duì)于無(wú)縫滾動(dòng)的實(shí)現(xiàn),優(yōu)化大數(shù)據(jù)量下的頁(yè)面卡頓問(wèn)題,感興趣的可以了解一下2023-12-12js實(shí)現(xiàn)有過(guò)渡漸變效果的圖片輪播相冊(cè)(兼容IE,ff)
這篇文章主要介紹了js實(shí)現(xiàn)有過(guò)渡漸變效果的圖片輪播相冊(cè),兼容IE、ff,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-01-01最新評(píng)論