开发者

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'){//do something}

Thanks.


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.


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.


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


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


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


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜