SOURCE

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 命令行工具 X clear

                    
>
console