分析
題目的意思大致就是找出每個字符出現的次數,然后比較大小。那么每個字符都應該對應它出現的次數。既然是一一對應的,那我們就想到用對象的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))