统计字符出现的次数

56 阅读1分钟
let  str = 'adfebghhferfher'

传统方法 定义一个对象

const obj = {}
for(let i=0 ;i<str.length;i++)
{
    if(obj[str[i]]) {
        obj[str[i]]++
    }else {
        obj[str[i]] = 1
    }
 }

高级点的写法

    str.split('').reduce((a,b)=>((a[b]?a[b]++:a[b] = 1),a),{})
    

reduce的用法讲解,

有两个参数 方法里面的形参和初始值

如果初始值不存在 第一个形参a等于数组的第一项 第二个形参b等于数组的第二项 ,每循环一次,将结果赋值给 a ,将数组的下一项赋值给b

如果存在初始值 将初始值赋值给第一个形参a,数组的第一项赋值给第二个形参b,每循环一次,将结果赋值给 a ,将数组的下一项赋值给b,

里面用到了括号运算符(xxx,xxx,xxxx) 括号里面的表达式会进行运算,返回括号的最后一项 总计:所有需要通过遍历进行累计的都可以使用reduce方法