下面的一些javascript代码应该检查是否是其中一个字母。但是当我输入“Hallo”时,它也会计算'H','L','L
woord.charAt(i) == 'a' || 'e' || 'i' || 'o' || 'u'
我做错了什么?
答案 0 :(得分:7)
(woord.charAt(i) == 'a') || 'e' || 'i' || 'o' || 'u'
// evaluates to true or 'e'
看起来你正在尝试编写像你写一个句子的代码,在这种情况下这并不能很好地翻译。上面的代码显示了该表达式的真实情况。
您需要单独比较每个字符串的字符或编写正则表达式。正则表达式更紧凑,看起来像:
/[aeiou]/.test(word.charAt(i))
答案 1 :(得分:2)
尝试使用不同的方法解决问题
var c = woord.charAt(i);
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'){
vowels++;
}
答案 2 :(得分: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++;
}
答案 3 :(得分:0)
基本上你应该单独检查每个选项,但这很难看并且表现不佳。我宁愿创建一个接受字符的数组,并检查该数组中当前char的索引。
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++;
}