1、思路:
- 新建一個空對象
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
轉換成字符串。 - 最後就可以返回出現次數最多的字符及次數了。
2、存在多個:
let str = 'http://www.sxqyuminggg.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 k in obj) {
if (num < obj[k]) {
num = obj[k]
}
}
for (var j in obj) {
if (obj[j] === num) {
keys.push(j)
}
}
return '出現次數最多的字符爲' + keys.join('和') + ',出現次數爲' + num + '次。'
}
console.log(word(str))
},
let str = 'asdfgaaasdffff'
let obj = {}
for (let i = 0; i < str.length; i++) {
if (!obj[str.charAt(i)]) {
obj[str.charAt(i)] = 1
} else {
obj[str.charAt(i)]++
}
}
// console.log(Object.keys(obj)) // ['a', 's', 'd', 'f', 'g']
let max = 0
let name = ''
for (let i in obj) {
if (obj[i] > max) {
max = obj[i]
name = i
}
}
console.log(name, max) // f 5