设置if else函数,检测它是否是元音

时间:2012-06-07 01:24:20

标签: javascript if-statement

我是JavaScript的新手,我知道我做错了,因为我不断得到true。有人可以指出我的错误吗?提前致谢。

function checkForVowel(x){
   if(x == "a", "e", "i", "o", "u"){
       document.write("true");
   }else{
       document.write("false");
   }
}

checkForVowel("n");

3 个答案:

答案 0 :(得分:11)

JavaScript的比较运算符并不神奇;你需要分别进行每次比较。您可以使用逻辑OR ||

来检查“其中任何一个”
if(x == "a" || x == "e" || x == "i" || x == "o" || x == "u")

或者,由于您有许多单字符字符串,因此可以使用indexOf。但如果你刚刚开始,上面的内容可能会更容易理解。

if(x.length === 1 && 'aeiou'.indexOf(x) > -1)

至于你不断变为现实的原因,,实际上是JavaScript中的一个运算符,主要是为了让人们混淆 1 。它评估其左侧,然后评估其右侧,并返回右侧。所以你的表达式如下:

if(x == "a", "e", "i", "o", "u")
if("e", "i", "o", "u")
if("i", "o", "u")
if("o", "u")
if("u")

这是一个真正的价值。

1 实际上不是。

答案 1 :(得分:2)

有时,使用大量if/else代码来测试数据结构的代码要清晰得多。哪个更快可能取决于特定的浏览器引擎和您有多少比较。这个用于查看字符串是否存在于元音串中:

var vowels = "aeiou";

function checkForVowel(x) {
    return(vowels.indexOf(x.toLowerCase()) >= 0);
}

这个测试以查看测试字符是否在这里不需要的javascript对象中,但是另一种有趣的方法来测试某些东西是否在集合中:

var vowels = {a: true, e: true, i: true, o: true, u: true};

function checkForVowel(x) {
    return(x.toLowerCase() in vowels);
}

答案 2 :(得分:1)

我不知道为什么,但没有人建议这样做。 :/

function checkForVowel(x){
    document.write(/[aeiou]/i.test(x));   //Clearly this is even simpler than
}                                         // other methods.

或者

function checkForVowel(x){
   if(x.search(/[aeiou]/i) != -1){
       document.write("true");
   }else{
       document.write("false");
   }
}