- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
20小时前关门了。
Improve this question
我有一段代码,它会计算在给定字符串中出现的次数。
但它只会计算字符串中唯一特殊字符的数量。
我怎样才能改变这种行为?
它应该给我3
,而不是1
,因为我有3个空格。
谢谢。
var string = 'hello, i am blue.';
var specialChar = [' ', '!'];
let count = 0
specialChar.forEach(word => {
string.includes(word) && count++
});
console.log(count);
3条答案
按热度按时间fkaflof61#
您所做的是对specialChar进行迭代,这将产生两次迭代:第一次迭代将检查
' '
是否包括在字符串中,这是真的,因此增加count
,并且第二次迭代将检查'!'
是否包括在字符串中,这不是真的,因此得到1。实际上,你应该做的是遍历字符串,检查每个字符是否包含在
specialChar
数组中,下面是你如何用最少的修改来实现这一点(代码可以改进并变得更清晰)。注意:
.split("")
将字符串拆分为一个字符数组。rbpvctlc2#
由于您使用的是一个匹配
[" ", "!"]
的数组,您需要将其作为输出,并使用计数对象,即:{" ": 5, "!": 2}
.下面是两个示例,一个使用String.prototype.match(),另一个对String使用Spread Syntax
...
使用匹配
和Array.prototype.reduce()来将初始Array结果缩减为Object结果
使用字符串排列
...
将字符串转换为Unicode代码点序列/符号的数组
tyu7yeag3#
计算字符串中字符数的一种方法是按字符拆分字符串,然后计算各部分的个数并减一。
使用reduce转换为函数