2

下面的一些 javascript 代码应该检查它是否是这些字母之一。但是,例如,当我键入“Hallo”时,它还会计算“H”、“L”、“L”

woord.charAt(i) == 'a' || 'e' || 'i' || 'o' || 'u' 

我做错了什么 ?

4

4 回答 4

7
(woord.charAt(i) == 'a') || 'e' || 'i' || 'o' || 'u'
// evaluates to true or 'e'

看起来您正在尝试像编写句子一样编写代码,在这种情况下翻译效果不佳。上面的代码显示了该表达式的实际情况。

您需要单独将字符与每个字符串进行比较或编写正则表达式。正则表达式更紧凑,看起来像:

/[aeiou]/.test(word.charAt(i))
于 2012-11-14T21:21:04.127 回答
2

Try using a different approach to the problem

    var c = woord.charAt(i);
    if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'){
    vowels++;
    }
于 2012-11-14T21:23:52.130 回答
1

改用这个

var str = "My string";
var chr = "";
var nVowels = 0;

for (pos = 0; pos < str.length; pos++){
   chr = str.charAt(pos).toLowerCase();
   if (chr == "a" || chr == "e" || chr == "i" || chr == "o" || chr == "u")
    nVowels++;
}
于 2012-11-14T21:21:13.233 回答
0

基本上,您应该分别检查每个选项,但这很丑陋并且表现不佳。我宁愿创建一个接受字符的数组并检查该数组中当前字符的索引。

var vowels = new Array('a', 'e', 'i', 'o');
var word = 'hello';
var vowelCount = 0;
for(var x=0; x < word.length; x++){
  var ch = word.charAt(x).toLowerCase();
  if (vowels.indexOf(ch) > -1)
    vowelCount++;
}
于 2012-11-14T21:50:19.517 回答