在if语句中写入多个“或”条件的更短方法

时间:2014-03-27 11:29:06

标签: javascript

我刚开始学习Javascript,我想知道:

var input = prompt();

var checkVowel = function(input){
  if (input === "a" || input ==="e" || input === "i" || input === "o" || input === "u" ){
      return true;
  }else{
    return false;
  }    
}

checkVowel(input);

每次写入多个输入而不是input === "e"是不是更短的方式?

5 个答案:

答案 0 :(得分:5)

您可以使用正则表达式执行此操作:

var checkVowel = function(input) {
  return /^[aeiou]$/.test(input);
};

或者将indexOf与数组一起使用:

var checkVowel = function(input) {
  return ['a','e','i','o','u'].indexOf(input) > -1;
};

答案 1 :(得分:2)

您也可以使用普通字符串:

var checkVowel = function(input) {
    return "aeiou".indexOf(input) >= 0;
};

答案 2 :(得分:1)

我通常在这种情况下使用这种模式:

var checkVowel = function(input) {
  if (['a', 'e', 'i', 'o', 'u'].indexOf(input) !== -1) {
      return true;
  } else {
    return false;
  }    
}

答案 3 :(得分:1)

  

没有更短的方式来编写多个输入而不是输入===" e"每一次?

如果你想检查多个输入,除了检查每个输入之外没有更短的方法(但如果检查所有其他答案,有更好的方法可以做到)。

我建议你阅读switch statement

var checkVowel = function(input){

    switch (input) {
      case "a":
      case "e":
      case "i":
      case "o":
      case "u":
          return true;

      default:
          return false;
    }
}

开关允许您以可读的方式检查多个输入。这种方法根本不短,但更具可读性。

答案 4 :(得分:0)

这是我得到的最短的。您还可以使用Array.prototype.includes()来减少多个OR条件。

const isVowel = input => ['a', 'e', 'i', 'o', 'u'].includes(input);