分析
題目的意思大體就是找出每一個字符出現的次數,而後比較大小。那麼每一個字符都應該對應它出現的次數。既然是一一對應的,那咱們就想到用對象的
key
和
value
來儲存字符和其出現的次數。
具體作法
- 新建一個空對象
obj
- 遍歷給定的字符串
- 接下來就是最重要的 把字符做爲
key
值,對應次數做爲value
添加給obj
。
- 判斷
obj
是否存在當前循環的字符,有則讓value
即次數++
,不然把當前項做爲key
添加給obj
。
- 而後是比較次數的大小。
- 這時咱們須要一個變量來儲存
obj
的value
值。
- 聲明一個變量
num
,並設置初始值爲0
。
- 遍歷
obj
,比較其value
值與num
值的大小。大則將其value
值賦給num
,不然num
值不變,從而找出最大的value
值。
- 這時咱們須要一個數組來儲存與最大的
value
值即num
匹配的key
值。由於這樣的key
值可能不止一個,因此用一個數組來儲存。
- 新建一個空數組
keys
。
- 遍歷
obj
,判斷與num
匹配的key
值,並添加在keys
內。
- 由於
keys
是個數組,須要用join
轉換成字符串。
- 最後就能夠返回出現次數最多的字符及次數了。
let str = "http://www.sxqyuming.com";
function word(str){
let obj = {};
let num = 0;
let keys = [];
for(var i=0;i<str.length;i++){
let strs = str[i]
if(!obj[strs]){
obj[strs] = 1;
}else{
obj[strs]++
}
}
for(var i in obj){
if(num<obj[i]){
num = obj[i]
}
}
for(var i in obj){
if(obj[i]==num){
keys.push(i)
}
}
return "出現次數最多的字符爲"+keys.join('和')+",出現次數爲"+num+"次。"
}
console.log(word(str))