Множественные ответы оператора IF — тот же результат Javascript

Это метод получения нескольких правильных ответов с одинаковым результатом?

 function check(code){
    if(code == (8 || 9 || 13 || 16 || 17 || 18 || 20 || 32)){
      return true;
    }
 }

Я знаю, что могу использовать оператор switch, но мне было интересно, похожи ли они на это. Я уже пытался использовать массив, но он медленный.

Я также понимаю, что вы можете использовать &&, но я не хочу вводить код == сто раз.


person MichaelH    schedule 03.01.2012    source источник
comment
&& и || имеют разные значения, но ни в том, ни в другом случае вы не можете использовать эту конструкцию.   -  person GolezTrol    schedule 03.01.2012


Ответы (4)


рассмотрите возможность использования массива

function check(code){
    return [8,9,13,16,17,18,20,32].indexOf(code) != -1;
}

Обратите внимание, что метод indexOf является частью ECMA5 и может быть недоступен в некоторых браузерах.

См. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf для полного документа.

person qiao    schedule 03.01.2012

Вы либо должны сделать это

return code == 8 || code == 9 || ...;

или это

return [8, 9, 13, ...].indexOf(code) > 0;
person Sergio Tulentsev    schedule 03.01.2012

Нет, вы должны их все расшифровать.

Лучшим способом будет цикл:

var values = [8, 9, 13, 16, 17, 18, 20, 32];
for (i = 0; i < values.length; ++i) {
    if (code === values[i]) {
        // do something.
    }
}
person duffymo    schedule 03.01.2012

Как насчет этого:

function check(code){
   return [8, 9, 13, 16, 17, 18, 20, 32].indexOf(code) != -1;
}
person KL-7    schedule 03.01.2012