6

可能重复:
根据值列表检查变量是否相等
Javascript:使用 OR 操作数比较 SINGLE 值与 MULTIPLE 值

首先,我是 javascript 方面的新手。请让我知道是否有任何简单的方法可以格式化以下代码。

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

Do something

} else{

    Do something

}
4

6 回答 6

10
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) 添加向后兼容性支持的信息。

于 2013-01-08T15:41:31.330 回答
9
var validTypes = /docx?|xlsx?|ppt|pdf/;

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

?注意:正则表达式中的问号 ,表示前一个字符是可选的,因此它可以同时匹配doc,而docx竖线|, 表示or它将匹配docorxls等​​。

于 2013-01-08T15:42:19.317 回答
3

也许像

var filenames = ['doc','docx','xls','xlsx','ppt','pdf'];
if(filenames.indexOf(fileName) >= 0 ) {
  // Do something
} else {
    // Do something else
}
于 2013-01-08T15:43:38.873 回答
1

Maybeswitch语句是最快的选择之一:

switch (fileName) {
    case "doc":
    case "docx":
    ...
        // ...
    default:
        // else
}
于 2013-01-08T15:42:04.043 回答
0

您可以重新格式化它以使代码更易于阅读:

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

或者,您可以使用诸如 jQuery.inArray()or之类的结构来减少代码的重复性array.indexOf()

var arr = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pdf'];
if (jQuery.inArray(fileName, arr) > -1){
    Do something
} else{
    Do something
}
于 2013-01-08T15:44:39.480 回答
0

创建数组更容易阅读。加上使用 jQuery 的 $.inArray() 方法。它的工作原理与 .indexOf() 类似,另外一个好处是它与旧版本的 IE 兼容,旧版本的 IE 缺少很多数组函数。

于 2013-01-08T16:13:07.657 回答