if语句问题中的OR逻辑.

1 javascript logic if-statement

我的if语句中的逻辑有问题.我试图让它检查字符串字符是否等于a,e,i,o或者u.然后,如果是这样,将字符添加到短语字符串中.否则在短语字符串中添加"x".

if语句似乎忽略了我的OR逻辑并返回true,无论它是否为元音.

function translate(string){
    var phrase = "";

    for(i=0; i<string.length; i++){
        if (string.charAt(i) === "a" || "e" || "i" || "o" || "u"){
           phrase += string.charAt(i);

       }else{

            console.log("x");

         }
    }
    console.log(phrase);
}


translate("this is fun");
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!谢谢.

ale*_*lex 5

if (string.charAt(i) === "a" || "e" || "i" || "o" || "u"){
Run Code Online (Sandbox Code Playgroud)

这是不正确的.如果第一个条件失败(字符不是"a"),它将始终是真实的,因为它将进行评估"e",这是真实的(JavaScript返回条件中表达式的最后一个评估部分).

你可以用......

// Define them somewhere out of the loop.
var vowels = ["a", "e", "i", "o", "u"];

// Your new condition.
if (vowels.indexOf(string.charAt(i)) > -1) {
Run Code Online (Sandbox Code Playgroud)

你也可以重写整个事情......

var vowels = ["a", "e", "i", "o", "u"];
var phrase = string
              .split("")
              .filter(function(char) { return vowels.indexOf(char) > -1; })
              .join("");
Run Code Online (Sandbox Code Playgroud)

jsFiddle.