Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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中有没有方法返回字符串中字符的频率?_Javascript_Arrays - Fatal编程技术网

在JavaScript中有没有方法返回字符串中字符的频率?

在JavaScript中有没有方法返回字符串中字符的频率?,javascript,arrays,Javascript,Arrays,e、 g 计数(“好”、“o”) 结果:2 我不希望它太快,我只需要一些简单有效的东西。您可以使用match查找字符串中出现的字符,并创建一个匹配数组。使用.length将告诉您有多少个。RegExp中的'g'标志用于匹配所有发生的事件,而不仅仅是第一次 function count(str, find) { return (str.match(RegExp(find,'g')) || []).length } count("Good", "o"); 如果要查找的字符是特殊的RegE

e、 g 计数(“好”、“o”) 结果:2


我不希望它太快,我只需要一些简单有效的东西。

您可以使用
match
查找字符串中出现的字符,并创建一个匹配数组。使用
.length
将告诉您有多少个。
RegExp
中的
'g'
标志用于匹配所有发生的事件,而不仅仅是第一次

function count(str, find) {
    return (str.match(RegExp(find,'g')) || []).length
}

count("Good", "o");
如果要查找的字符是特殊的
RegExp
字符,如
|
+
等,则上面的
RegExp
解决方案不起作用

以下是不使用
RegExp
的替代解决方案(也可能更快):


此函数用于在每次出现字符时将字符串拆分为数组。(例如,
Good
变为
['G','','d']
)。此数组的大小始终比出现的次数多一个,因为它包含两端。因此,您可以获得此数组的长度并减去1。

String.prototype.match
?尝试查找点数。它不返回零。
function count(str, find) {
    return (str.split(find)).length - 1;
}

count("Good", "o");