Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6/lodash统计字符串中字符的出现次数_Javascript_Ecmascript 6_Lodash - Fatal编程技术网

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

Javascript ES6/lodash统计字符串中字符的出现次数,javascript,ecmascript-6,lodash,Javascript,Ecmascript 6,Lodash,我想计算字符串中某个字符出现的次数 此堆栈溢出post使用ES5而不是ES6或Lodash执行以下操作: 然而,我想知道是否有一种更符合ES6标准的方法来做到这一点。Lodash解决方案也是可以接受的。您可以使用Array.from()、RegExp构造函数和String.prototype.match() const str=“abcabc”; const occurrences=Array.from(str,(s,index)=> ({[s]:str.match(新的RegExp(s,“

我想计算字符串中某个字符出现的次数

此堆栈溢出post使用ES5而不是ES6或Lodash执行以下操作:


然而,我想知道是否有一种更符合ES6标准的方法来做到这一点。Lodash解决方案也是可以接受的。

您可以使用
Array.from()
RegExp
构造函数和
String.prototype.match()

const str=“abcabc”;
const occurrences=Array.from(str,(s,index)=>
({[s]:str.match(新的RegExp(s,“g”)).length,index});
console.log(发生)
单行es6,使用
const count=(str,ch)=>(str.match(新RegExp(ch,'g'))| |[])长度;

log(count('abcdefgaaa','a')我不认为它比RegExp解决方案好,但它是ES6

将字符串分散到和数组,并过滤结果以仅获取所需的字母。结果数组的长度是该字母出现的次数

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

控制台日志(结果)下面是一个lodash解决方案:

const count=(str,ch)=>countBy(str)[ch]| 0;
控制台日志(计数(“abcadea”、“a”)

不知道你为什么需要如此具体的东西。有几种方法可以做到这一点,使用正则表达式,或使用字符串拆分和长度。是一个请求此功能的lodash线程,以及几种可选方法。我想你可以使用类似于
count=0;对于(让字符串的ch){if ch==(target)count++;}
,但这似乎效率低下。类似地,您可以将整个字符串拆分为一个数组,但我不认为这有什么意义。如果您的目标是速度,那么您将希望使用其中一个ES5解决方案。ES6技巧通常基于函数式编程,因此它们有更多的开销。这与(它也提供了Lodash解决方案)完全相同。ES6中没有任何东西可以比现有的ES5解决方案更好。我不确定这是否是他们想要的结果。此外,生成频率图通常是一个O(n)算法,但通过在每次迭代中运行整个匹配,您已经将其变成了O(n^2)。@4 Castle仍然需要深入研究时间复杂度算法,请今天阅读一些,尽管我们还会阅读更多。OP不指定字符串中每个字符的出现次数以外的预期输出。您认为预期输出是什么?由于OP的特殊性在最初的问题上是缺乏的,从需求的角度来看,这里。这种方法当然可以更加简洁composed@4castle你是说OP里的“角色”吗?对。我不确定他们是想只计算单个特定字符的出现次数,还是想计算字符串中每个字符的出现次数。无论哪种方式,算法都应该只需要对字符串进行一次传递。