2

我是一个不太会表达的人,所以我尽可能的用代码来阐释我的理解和思考,废话不多说,我就直接放代码了:

function getStingMax(str){
     if(typeof str !== "string"){
         alert("请传入string类型的数据")
         return
     }
     let countObj ={},max=[{key:str[0],num:1}];
     for(let i=0;i<str.length;i++){
        let char=str[i];
        countObj[char]=countObj[char]?countObj[char]+1:1;   
     }
     
     for(let char in countObj){
         if(max[0].num<countObj[char]){
            max=[];
            max[0]={key:char,num:countObj[char]}
        }else if(max[0].num===countObj[char]){
            max.push({key:char,num:countObj[char]})
        }
    }
     console.log(max);
     return {
         max:max
     }
}

在这段代码中,我先做了一个参数校验,保证传入的是字符串。然后将外部传入的str进行了计数,并将计数结果放在了countObj中。再对countObj的每个属性进行遍历,找出出现次数最多的字符串合集存入max数组,并把max数组打印出来。最后将得到max数组放在返回对象的max属性中返回出去(用对象返回是为了方便该方法以后的拓展)。


胡晓峰
97 声望2 粉丝

撼大摧坚,徐徐图之