为什么我的VowelCount函数没有返回正确的解决方案
Why is my VowelCount function not returning the proper solution?
由于某种原因,VowelCount()在有一对相邻元音的情况下只计算一个元音。例如,它把"goes"中的"oe"算作一个元音。我不明白为什么会这样。不管我是使用forEach函数还是for循环,它都会这样做。有人能澄清我的误解吗?
下面是我的代码:function VowelCount(str) {
var charArr = str.split('');
var pattern = /[aeiou]/gi;
var vowelCount = 0;
/*
charArr.forEach(function(char) {
if (pattern.test(char)) {
//console.log(char);
vowelCount++;
}
});
*/
for (var i = 0; i < charArr.length; i++) {
//console.log(charArr[i]);
if (pattern.test(charArr[i])) vowelCount++;
}
return vowelCount;
}
console.log(VowelCount("goes"));
我不知道为什么,但全局搜索/g
导致它在e
上失败。你不需要全局搜索,因为你检查的是单个字符。
下面是一个工作版本:
function VowelCount(str) {
var pattern = /[aeiou]/i;
var vowelCount = 0;
for (var i = 0; i < str.length; i++) {
if (pattern.test(str[i])){
vowelCount++;
}
}
return vowelCount;
}
console.log(VowelCount("goes")); //2
我还更改了,这样您就不需要将其转换为字符数组。遍历字符串得到相同的结果。
function VowelCount(subject) {
console.log(subject.match(/[aeiou]/gi));
// or to get the length
console.log(subject.match(/[aeiou]/gi).length);
}
VowelCount("goes");
//result -> ["o", "e"]
您可以使用您的模式和match()
函数来实现元音的数量。这样就不需要循环遍历数组,只要匹配就可以得到计数:
var chars = 'fred is a flintstone';
var pattern = /[aeiou/gi;
var matches = chars.match(pattern);
var vowelCount = matches ? matches.length : 0;
相关文章:
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- iPad虚拟键盘-哪一个-javasctript解决方案
- AJAX HTTP基本身份验证解决方案
- 在chrome web商店中打开时,是否有允许执行内容/后台脚本的解决方案
- Chart.js-添加渐变而不是纯色-实现解决方案
- learnyounode杂耍异步解决方案不工作
- 元素在通过单击链接隐藏后重新出现(需要不包含返回 false 或 preventDefault 的解决方案)
- “杂耍异步” - 为什么我的解决方案根本不返回任何内容
- Node.js解决方案用于XMPP BOSH预绑定以返回SID和RID
- 按下按钮我的网页正在重新加载?我尝试过从js返回false之类的方法,但仍然没有解决方案
- 获取插入符号位置的常见解决方案会返回奇怪的结果
- 循环遍历数组以查找匹配并返回所有可能的解决方案
- 无法用Angular从HTML视图获取值到控制器.解决方案返回$scope变量undefined
- 数组的数组或使用相同var返回不同值的另一种解决方案
- 为什么我的VowelCount函数没有返回正确的解决方案
- 递归解决方案:字符串排列.无法在javascript中返回排列字符串数组
- AngularJs:返回已经找到的嵌套$http解决方案的承诺,但为什么它能工作
- 解析消息并返回 json 的更干净的解决方案
- PHP返回按钮的终极HTTP_REFERER解决方案
- Javascript计算排列——为什么当我不复制数组时,我的代码返回不需要的解决方案?