姓名:張立斐 ? 學(xué)號(hào):19020700001? ?學(xué)院:電子工程學(xué)院?
轉(zhuǎn)自:https://blog.csdn.net/weixin_45863614/article/details/119540513
【嵌牛導(dǎo)讀】JavaScript利用charAt()統(tǒng)計(jì)出現(xiàn)次數(shù)最多的字符和次數(shù)
【嵌牛鼻子】JavaScript charAt()
【嵌牛提問(wèn)】JavaScript如何利用charAt()統(tǒng)計(jì)出現(xiàn)次數(shù)最多的字符和次數(shù)夺克?
【嵌牛正文】
判斷一個(gè)字符串'aabcdobdackoppz'中出現(xiàn)次數(shù)最多的字符衔统,并統(tǒng)計(jì)其次數(shù)
首先我們需要了解一個(gè)知識(shí)點(diǎn):(如何判斷對(duì)象里有該屬性)
// 有一個(gè)對(duì)象橘蜜,來(lái)判斷是否有該屬性
? ? // 寫法:對(duì)象['屬性名']
? ? var o = {
? ? ? ? age : 18 ,
? ? ? ? sex : '男'
? ? }
? ? if(o['sex']){
? ? ? ? console.log('里面有該屬性');
? ? } else {
? ? ? ? console.log('沒(méi)有該屬性');
? ? }
核心算法:
1.我們可以利用 charAt() 這個(gè)方法來(lái)遍歷這個(gè)字符串宛篇。
2.把每個(gè)字符都存儲(chǔ)給對(duì)象,如果對(duì)象沒(méi)有該屬性,就給它賦值1,如果存在該屬性了就加1薄湿。
3.遍歷對(duì)象 , 得到最大值和出現(xiàn)次數(shù)豺瘤。
1.利用charAt方法遍歷數(shù)組 'aabcdobdackoppz' (可以理解為把值存到對(duì)象obj里面)
<script>? ?
? ? var str = 'aabcdobdackoppz' ;
? ? var obj = {} ;
? ? for(var i = 0 ; i < str.length ; i++){
? ? ? ? var chars = str.charAt(i) // chars 是 字符串的每一個(gè)字符
? ? ? ? if(obj[chars]){ // o[chars] 得到的是屬性
? ? ? ? ? ? obj[chars]++
? ? ? ? } else {
? ? ? ? ? ? obj[chars] = 1 ;
? ? ? ? }
? ? }
? ? console.log(obj);
</script>
此時(shí)已經(jīng)把值存在obj對(duì)象里了
obj對(duì)象
2.接下來(lái)只需要遍歷對(duì)象得到最大值和出現(xiàn)次數(shù)
<script>
? ? //遍歷對(duì)象
? ? var max = 0;
? ? var ch = '';
? ? for (var k in obj) {? // 遍歷對(duì)象需要使用 for in
? ? ? ? // k 得到的是屬性名,obj[k]得到的是屬性值
? ? ? ? // 此處的屬性名k 只有在循環(huán)中才有用 , 所以我們需要?jiǎng)?chuàng)建一個(gè) ch 來(lái)存儲(chǔ) k
? ? ? ? if (obj[k] > max) {
? ? ? ? ? ? max = obj[k];
? ? ? ? ? ? ch = k;
? ? ? ? }
? ? }
? ? console.log( ch + '出現(xiàn)次數(shù)最多' + '次數(shù)為:' + max);
</script>
總結(jié):我們可以理解為所有字符都先執(zhí)行了obj[chars]=1蚕泽,相當(dāng)于創(chuàng)建了對(duì)象须妻,然后再判斷是否已經(jīng)存在對(duì)象砸逊。
————————————————
版權(quán)聲明:本文為CSDN博主「ae T」的原創(chuàng)文章师逸,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明动知。
原文鏈接:https://blog.csdn.net/weixin_45863614/article/details/119540513