Skip to content Skip to sidebar Skip to footer

How To Make This If Statement Shorter?

Can I make this statement shorter? if(abc=='value1' || abc=='value2' || abc=='value3') {//do something} to make it look similar to this: if(abc=='value1' || 'value2' || 'value3'){

Solution 1:

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.

Solution 2:

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.

Solution 3:

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
  }
}

Solution 4:

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

Solution 5:

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

Post a Comment for "How To Make This If Statement Shorter?"