我大概用到了 数组的 split 和 reduce 方法 和对象的 for in 方法
直接上代码
let str = 'qqqqqwwwwweeeeerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr'
let arr = str.split('')
console.log(arr)
let obj = arr.reduce((pre,item)=>{
if(!pre[item]){
pre[item] = 1
}else{
pre[item] ++
}
return pre
},{})
console.log(obj)
let a = 0
let max = {}
for(key in obj){
if(obj[key]>a){
max.value = obj[key]
max.key = key
}
a = obj[key]
}
console.log(max)
首先我们将字符串转为数组
![](https://img-blog.csdnimg.cn/ad676f96c0694ae2bd8eeed06d689a53.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcXFfNDQ3NjYzNzc=,size_20,color_FFFFFF,t_70,g_se,x_16)
得到这个数组后
我们就要使用这次我写博客练习的一个 数组方法了 reduce(逐个遍历数组元素)
该方法接受两个参数
参数一:
为一个函数 函数内有四个参数 这四个参数可以理解为
第1个参数: 每一次迭代的 返回 值
第2个参数: 遍历的每一项的值 类似于 forEach 的 item
第3个参数: 遍历的每一项key 类似于 forEach 的 index
第4个参数: 被遍历的数组本身
参数二:
是遍历迭代的初始值(如果不设置这个值 则会将 遍历数组的第一项作为初始值 遍历从数组第二项开始 )
返回值:
这里的返回值不是这个 reduce的返回值 而是遍历的每一项的返回值 return 该值 将作用到下一次迭代 的第一个参数
上面是我对 reduce 方法的理解如有错误请大佬赐教
接下来我们来使用该方法
对上面得到的字符串数组进行遍历 我们将初始的迭代值设为一个空对象
判断该对象中是否存在迭代的字符 如不存在则 创建该属性 存在则加一 一次迭代后将对象pre返回
进行下一次迭代 这样我能就得到一个对象 dey为 字符 value 为出现次数
接下来我们要拿到出现最多的字符以及他出现的次数(这个很简单不解释了)