我是一个不太会表达的人,因此我尽量的用代码来阐释个人理解和思考,废话很少说,我就直接放代码了:数组
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属性中返回出去(用对象返回是为了方便该方法之后的拓展)。code