js输出字符串中出现次数最多的字符与次数

这是一道在面试中出现频率比较高的题目,因为所考到的知识点也比较多.

话不多说直接上代码

let str = 'gggjjggyyyooppoooww'
// let str = 'hello world'

function strCount(str) {
    
    
    //定义一个对象用于保存str的每一项以及出现次数。
    var obj = {
    
    };
    // 去除字符串中的所有空格
    str = str.replace(/\s*/g,"");  
    //遍历str,循环其中的每一个字符,将某个字符的值及出现的个数拿出来作为json的key和value
    for(var i=0;i<str.length;i++){
    
    
        //判断对象中是否有当前str的值
        if(obj[str[i]] === undefined){
    
    
            //如果不存在 就将当前值添加到对象中,并赋值为1
            obj[str[i]] = 1
        }else{
    
    
             //如果存在的话就让数组中已有的当前值的value值++;
            obj[str[i]]++
        }
    }
    //存储出现最多的次数
    var num = 0;
    //存储出现次数最多的值
    var value='';
    //遍历对象,利用比较法判断哪个字符出现的次数最多
    for(let j in obj){
    
    
        //替换次数
        if(obj[j]>=num){
    
    
            num=obj[j]
        }
    }
    // 定义一个数组存放所有的符合条件的字符
    let arr = []
    // 遍历obj对象,将符合条件的字符添加到数组中
    for (let i in obj) {
    
    
        if (obj[i] == num) {
    
    
            arr.push(i)
        }
    }
    value = arr.toString()
    return `字符串中出现次数最多的字符是:${
      
      value} ; 出现最多的次数是:${
      
      num}`
}
var result = strCount(str);
console.log(result);

输出结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_51441159/article/details/127859802