Javascript 给定一串字母,如何计算每个字母的出现次数?

Javascript 给定一串字母,如何计算每个字母的出现次数?,javascript,ecmascript-6,functional-programming,Javascript,Ecmascript 6,Functional Programming,给定一个字母字符串,我希望创建一个包含键值对的对象,以字母为键,字符串中出现的次数为值 因此,给定“aabccc”,函数应返回: {a:2,b:1,c:3} 什么是计算字母的好方法?理想情况下,遵循函数式编程范式并利用ES6功能(如果适用)。直到现在,我只使用C++和OO,所以我在我的舒适区之外使用工具和技术练习。我对ES6和函数式编程的所有新特性都很陌生,所以我希望为它们培养正确的思维方式 如有任何见解,将不胜感激。谢谢。您可以使用和 这里的想法是 首先在每个字符上拆分字符串 在reduce中

给定一个字母字符串,我希望创建一个包含键值对的对象,以字母为键,字符串中出现的次数为值

因此,给定“aabccc”,函数应返回: {a:2,b:1,c:3}

什么是计算字母的好方法?理想情况下,遵循函数式编程范式并利用ES6功能(如果适用)。直到现在,我只使用C++和OO,所以我在我的舒适区之外使用工具和技术练习。我对ES6和函数式编程的所有新特性都很陌生,所以我希望为它们培养正确的思维方式

如有任何见解,将不胜感激。谢谢。

您可以使用和

这里的想法是

  • 首先在每个字符上拆分字符串
  • 在reduce中,我们检查是否有可用的字符作为op中的键,如果可用,我们将其增加1。如果不是,我们将创建一个值为1的新键
  • let str=`aabccc`
    让输出=str.split('').reduce((op,inp)=>{
    if(op[inp]){
    op[inp]++
    }否则{
    op[inp]=1
    }
    返回操作
    },{})
    console.log(输出)
    或者您可以使用
    lodash的
    .reduce()
    跳过
    拆分<代码>.\reduce(str,(obj,c)=>{obj[c]?obj[c]+:obj[c]=1;返回obj;},{})