if条件的javascript格式

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

首先,我是javascript方面的新手。 请告诉我有没有简单的方法来形成以下代码。

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

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

 var validTypes = /docx?|xlsx?|ppt|pdf/; if (fileName.match(validTypes)) { ... } 

注意:问号, ? ,在正则表达式中表示前一个字符是可选的,因此它可以匹配docdocx管道, | ,表示左右它将匹配docxls等。

也许是这样的

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

也许switch语句是最快的选择之一:

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

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

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

或者,您可以使用诸如jQuery.inArray()array.indexOf()类的构造使代码重复性array.indexOf()

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

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