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:
- Leave it as it is;
- Use an associative array/object;
- 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.
精彩评论