function returnMaxStr(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.charAt(i)]){
//如果不存在 就将当前值添加到对象中,并赋值为1
obj[str.charAt(i)]=1
}else{
//如果存在的话就让数组中已有的当前值的value值++;
obj[str.charAt(i)]++
}
}
//存储出现最多的次数
var num=0;
//存储出现次数最多的值
var value='';
//遍历对象,利用比较法判断哪个字符出现的次数最多
for(let j in obj){
//如果当前项大于下一项,就让当前值更改为出现最多次数的值
if(obj[j]>num){
num=obj[j]
value=j
}
}
return{
//输出出现最多的值和次数
value,num
}
}
var str = 'hellow world'
var result = returnMaxStr(str);
document.write(`出现次数最多的字符是:${result.value},出现了${result.num}次`)
总结一下:思路就是先将字符串中的空格去除,然后遍历字符串,利用charAt()返回指定位置的字符的方法判断新建的对象中是否已经存在某个字符,若不存在,将字符添加到对象中,赋值为1,若是已经存在的字符,则给他的值++,然后设定一个存放出现次数的变量,利用for…in遍历对象的属性,通过判断当前项与下一项的大小,最终保存的那个最大的值就是出现最多的次数。
有两个知识点需要做笔记
- str.charAt(index):返回指定位置的字符。index必需。表示字符串中某个位置的数字,即字符在字符串中的下标。
- for…in:用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。