如何使这个if语句缩短?

时间:2010-02-07 23:41:37

标签: javascript if-statement

我可以缩短这句话吗?

if(abc=='value1' || abc=='value2' || abc=='value3') {//do something}

使其看起来与此相似:

if(abc=='value1' || 'value2' || 'value3'){//do something}

感谢。

6 个答案:

答案 0 :(得分:9)

您有几个选择:

  1. 保持原样;
  2. 使用关联数组/对象;
  3. 使用switch声明。
  4. 第二种形式是无效的Javascript语法。

    (2)类似于:

    var abcOptions = {
      "value1" : true,
      "value2" : true,
      "value3" : true
    };
    if (abcOptions[abc]) {
      ...
    }
    

    (3)是:

    switch (abc) {
      case "value1":
        ...
        break;
      case "value2":
        ...
        break;
      case "value3":
        ...
        break;
    }
    

    就个人而言,从可读性的角度来看,我不是一个忠实的粉丝,但这是一个合理的方法,有很多价值。

    我不一定推荐这个,但在某些情况下它可能是一种选择。如果你只处理三个值:

    if (abc == "value1" || abc == "value2" || abc == "value3") {
      ...
    }
    

    因为它更具可读性。

答案 1 :(得分:2)

if (['value1', 'value2', 'value3'].indexOf(abc) != -1)

这个可以保持一定的可读性,但你应该保留原始代码,除非你有更多的条件。

答案 2 :(得分:1)

您可以使用开关:

switch (abc) { case 'value1': case 'value2': case 'value3': {
  // do something
}}

或以更传统的形式写作:

switch (abc) {
  case 'value1':
  case 'value2':
  case 'value3': {
    // do something
  }
}

答案 3 :(得分:1)

if(abc.match(/^value[1-3]$/)) {
    //doSomething....
}

答案 4 :(得分:0)

if ( abc.search(/value[123]/) != -1 ) ...do your stuff ...

答案 5 :(得分:0)

您可以使用switch语句。像这样:

switch(abc) {
    'value1':
    'value2':
    'value3':
         // do something
         break;
    default:
         // noop
}

但您原来的if ||可能仍然更受欢迎。