Форматирование Javascript для условия if

Возможный дубликат:
Проверить равенство переменных на список значений
Javascript: сравнение ОДИНОЧНОЙ ЦЕННОСТИ ОТ МНОЖЕСТВЕННЫХ ЦЕННОСТЕЙ с ООПЕРЕВОЗКАМИ

Прежде всего, я новичок в JavaScript. Пожалуйста, дайте мне знать, есть ли простой способ формирования приведенного ниже кода.

if( fileName== 'doc' || fileName=='docx' || fileName=='xls' || fileName=='xlsx' || fileName=='ppt' || fileName=='pdf' ){

Do something

} else{

    Do something

}

Ответ 1

var SUPPORTED_FILE_EXTENSIONS = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pdf'];

if(SUPPORTED_FILE_EXTENSIONS.indexOf(fileName) != -1){
    //Do Something
} else {
    //Do Something Else
}

Array.indexOf() - Обратите внимание, что это также включает в себя информацию о добавлении поддержки обратной совместимости для старых браузеров (IE IE).

Ответ 2

var validTypes = /docx?|xlsx?|ppt|pdf/;

if (fileName.match(validTypes)) {
    ...
}

Примечание: знак вопроса ? в регулярном выражении указывает, что предыдущий символ является необязательным, поэтому он может соответствовать как doc, так и docx трубе, |, указывает or, чтобы он соответствовал doc или xls и т.д.

Ответ 3

может быть что-то вроде

var filenames = ['doc','docx','xls','xlsx','ppt','pdf'];
if(filenames.indexOf(fileName) >= 0 ) {
  // Do something
} else {
    // Do something else
}

Ответ 4

Может быть, оператор switch является одним из самых быстрых вариантов:

switch (fileName) {
    case "doc":
    case "docx":
    ...
        // ...
    default:
        // else
}

Ответ 5

Вы можете переформатировать его, чтобы сделать код более удобным для чтения:

if( fileName == 'doc' || 
    fileName == 'docx' || 
    fileName == 'xls' || 
    fileName == 'xlsx' || 
    fileName == 'ppt' || 
    fileName == 'pdf' ){
    Do something
} else{
    Do something
}

В качестве альтернативы вы можете сделать код менее повторяющимся, используя конструкцию, такую ​​как jQuery.inArray() или array.indexOf():

var arr = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pdf'];
if (jQuery.inArray(fileName, arr) > -1){
    Do something
} else{
    Do something
}

Ответ 6

Создание массива проще для чтения. Плюс используйте метод jQuery $.inArray(). Он работает так же, как .indexOf() с дополнительным преимуществом, что он совместим со старой версией IE, у которой много недостающих функций массива.