判斷一個字串'aabcdobdackoppz'中出現次數最多的字符,并統計其次數
首先我們需要了解一個知識點:(如何判斷物件里有該屬性)
// 有一個物件,來判斷是否有該屬性
// 寫法:物件['屬性名']
var o = {
age : 18 ,
sex : '男'
}
if(o['sex']){
console.log('里面有該屬性');
} else {
console.log('沒有該屬性');
}
核心演算法:
1.我們可以利用 charAt() 這個方法來遍歷這個字串,
2.把每個字符都存盤給物件,如果物件沒有該屬性,就給它賦值1,如果存在該屬性了就加1,
3.遍歷物件 , 得到最大值和出現次數,
1.利用charAt方法遍歷陣列 'aabcdobdackoppz' (可以理解為把值存到物件obj里面)
<script>
var str = 'aabcdobdackoppz' ;
var obj = {} ;
for(var i = 0 ; i < str.length ; i++){
var chars = str.charAt(i) // chars 是 字串的每一個字符
if(obj[chars]){ // o[chars] 得到的是屬性
obj[chars]++
} else {
obj[chars] = 1 ;
}
}
console.log(obj);
</script>
此時已經把值存在obj物件里了
2.接下來只需要遍歷物件得到最大值和出現次數
<script>
//遍歷物件
var max = 0;
var ch = '';
for (var k in obj) { // 遍歷物件需要使用 for in
// k 得到的是屬性名,obj[k]得到的是屬性值
// 此處的屬性名k 只有在回圈中才有用 , 所以我們需要創建一個 ch 來存盤 k
if (obj[k] > max) {
max = obj[k];
ch = k;
}
}
console.log( ch + '出現次數最多' + '次數為:' + max);
</script>
總結:我們可以理解為所有字符都先執行了obj[chars]=1,相當于創建了物件,然后再判斷是否已經存在物件,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/292980.html
標籤:其他
