dan*_*y74 9 javascript ecmascript-6 lodash
我想计算一个字符串中出现的字符数.
这个堆栈溢出帖使用ES5而不是ES6或Lodash:
但是,我想知道是否有更多的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)
我不认为它比RegExp解决方案更好,但它是ES6.
将字符串传播到数组,并过滤结果以仅获取所需的字母.结果数组的长度是该字母出现次数.
const str = "aabbccaaaaaaaccc";
const result = [...str].filter(l => l === 'c').length;
console.log(result);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5070 次 |
| 最近记录: |