How to make this if statement shorter?

后端 未结 6 492
执念已碎
执念已碎 2021-01-28 04:57

Can I make this statement shorter?

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

to make it look similar to this:<

相关标签:
6条回答
  • 2021-01-28 05:35

    You can use a switch:

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

    Or written in a more traditional form:

    switch (abc) {
      case 'value1':
      case 'value2':
      case 'value3': {
        // do something
      }
    }
    
    0 讨论(0)
  • 2021-01-28 05:38

    You have a couple options:

    1. Leave it as it is;
    2. Use an associative array/object;
    3. Use a switch statement.

    The second form is not valid Javascript syntax.

    (2) is something like:

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

    (3) is:

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

    Personally I'm not a huge fan of this from a readability point of view but it's a reasonable approach with a large number of values.

    I don't necessarily recommend this but it might be an option in certain circumstances. If you're only dealing with three values stick with:

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

    as it's much more readable.

    0 讨论(0)
  • 2021-01-28 05:40
    if(abc.match(/^value[1-3]$/)) {
        //doSomething....
    }
    
    0 讨论(0)
  • 2021-01-28 05:43

    You could use a switch statement. Like this:

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

    But your original if with || is probably still preferable.

    0 讨论(0)
  • 2021-01-28 05:46
    if ( abc.search(/value[123]/) != -1 ) ...do your stuff ...
    
    0 讨论(0)
  • 2021-01-28 05:53
    if (['value1', 'value2', 'value3'].indexOf(abc) != -1)
    

    This one manages to remain somewhat readable, but you should leave your original code as-is unless you have way more conditions.

    0 讨论(0)
提交回复
热议问题