首页 > 解决方案 > 给定一串字母,我如何计算每个字母的出现次数?

问题描述

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

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

数字母的好方法是什么?理想情况下,遵循函数式编程范式并在适用的情况下利用 ES6 功能。到目前为止,我只使用过 C++ 和 OO,所以我正在使用我的舒适区之外的工具和技术进行练习。我对 ES6 和函数式编程的所有新特性都很陌生,所以我希望为他们培养正确的心态。

任何见解将不胜感激。谢谢你。

标签: javascriptecmascript-6functional-programming

解决方案


您可以使用拆分减少

这里的想法是

  1. 每个字符上的第一个拆分字符串。
  2. 在 reduce 中,我们检查是否有可用的字符作为 op 中的键,如果可用,我们将其加一。如果不是,我们创建一个值为 1 的新键。

let str = `aabccc`

let output = str.split('').reduce((op,inp)=>{
  if(op[inp]){
    op[inp]++
  } else {
    op[inp]=1
  }
  return op
},{})

console.log(output)


推荐阅读