Форматирование 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, у которой много недостающих функций массива.