ES6/lodash计算字符串中字符的出现次数

dan*_*y74 9 javascript ecmascript-6 lodash

我想计算一个字符串中出现的字符数.

这个堆栈溢出帖使用ES5而不是ES6或Lodash:

计算Javascript中字符串中出现的字符数

但是,我想知道是否有更多的ES6方式来做到这一点.Lodash解决方案也是可以接受的.

Ser*_*aev 16

这是一个lodash解决方案:

const count = (str, ch) => _.countBy(str)[ch] || 0;

console.log(count("abcadea", "a"));
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

解决方案看起来很紧凑,不使用正则表达式,仍然可以在单次扫描中完成工作.它必须非常快,但如果性能非常重要,那么最好选择好的旧for循环.

更新:另一个基于lodash的解决方案:

const count = (str, ch) => _.sumBy(str, x => x === ch)

console.log(count("abcadea", "a"));
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)


Ori*_*ori 6

我不认为它比RegExp解决方案更好,但它是ES6.

将字符串传播到数组,并过滤​​结果以仅获取所需的字母.结果数组的长度是该字母出现次数.

const str = "aabbccaaaaaaaccc";

const result = [...str].filter(l => l === 'c').length;

console.log(result);
Run Code Online (Sandbox Code Playgroud)