Как сделать это, если заявление короче? - PullRequest
0 голосов
/ 08 февраля 2010

Могу ли я сделать это утверждение короче?

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

чтобы он выглядел примерно так:

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

Спасибо.

Ответы [ 6 ]

9 голосов
/ 08 февраля 2010

У вас есть пара вариантов:

  1. Оставь как есть;
  2. Использовать ассоциативный массив / объект;
  3. Используйте оператор switch.

Вторая форма недопустима в синтаксисе 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") {
  ...
}

так как это намного более читабельно.

2 голосов
/ 08 февраля 2010
if (['value1', 'value2', 'value3'].indexOf(abc) != -1)

Этому удается оставаться в некоторой степени читабельным, но вы должны оставить свой исходный код без изменений, если у вас нет больше условий.

1 голос
/ 08 февраля 2010
if(abc.match(/^value[1-3]$/)) {
    //doSomething....
}
1 голос
/ 08 февраля 2010

Вы можете использовать переключатель:

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

Или написано в более традиционной форме:

switch (abc) {
  case 'value1':
  case 'value2':
  case 'value3': {
    // do something
  }
}
0 голосов
/ 08 февраля 2010

Вы можете использовать оператор switch. Как это:

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

Но ваш оригинальный if с ||, вероятно, все еще предпочтительнее.

0 голосов
/ 08 февраля 2010
if ( abc.search(/value[123]/) != -1 ) ...do your stuff ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...