function fn(str) {
let max_num = 0 // 记录出现频率最大值
let max_word // 出现频率最大的词
// 先将字符串全部转换成小写 便于匹配同单词
str = str.toLowerCase()
// 用正则 提取出单词部分 组成数组
let list = str.match(/[a-z]+/g)
// 遍历 统计每个单词词频 找到最大值
let map = {} // 记录统计过的单词 避免重复计算
for (let val of list) {
if (!map[val]) {
// 未统计过的单词
// 动态正则表达式
let reg = new RegExp(val, 'g') // 生成如 /abc/g 正则表达式
// 用正则匹配找出符合的单词数组 记录数组长度
let num = str.match(reg).length
// 记录下统计过的单词
map[val] = num
// 对比最大值
if(num > max_num){
max_num = num
max_word = val
}
}
}
return `${max_word}: ${max_num}`
}
// 验证
let t = ' bac abc ttt y weu aa abc '
console.log(fn(t)) // abc: 2
console