缩短条件声明?

时间:2014-06-02 22:34:00

标签: javascript if-statement

相当简单的问题,不确定我在这里失踪了什么...... 我有这样的事情:

if(this == 18 || this == 19 || this == 20 || this == 21) { 
    ...
}

我该如何缩短它?我试过了if(this == 18 || 19 || 20...),但那并没有奏效。我还有大约50多个这样的价值观,所以如果可以的话我会很棒。

Thanls。

6 个答案:

答案 0 :(得分:4)

假设适用于旧浏览器的垫片:

if( [18,19,20,21].indexOf(this) > -1) {

或者,或者:

if( "|"+[18,19,20,21].join("|")+"|".indexOf("|"+this+"|") > -1) {

答案 1 :(得分:0)

编辑:查看使用indexOf的答案 - 更清洁的IMO

假设数据不是连续数字(如果仅使用此> min&& this< max)

你可以将它们全部放入一个数组中,然后在数组上做一个foreach。 在循环内部,进行比较,如果它匹配你的逻辑然后中断。

答案 2 :(得分:0)

尝试使用数组

if ([18, 19, 20, 21].indexOf(this) >= 0) {
     // ...
}

答案 3 :(得分:0)

如果它们是连续的,你可以这样做:

if(this >= 18 && this <= 21){
  ...
}

如果它们不是连续的,您可以使用数组indexOf

var values = [18,19,20,21];
if(values.indexOf(this) !== -1){
  ...
}

答案 4 :(得分:0)

如何创建数组并使用indexOf?

类似

testArray = [18,19,20,21];
if( testArray.indexOf(this) != -1){
    ...
}

答案 5 :(得分:0)

jQuery也有类似的功能inArray()

  

if(jQuery.inArray(this,[18,19,20,21])&gt; -1){...}