具有多个OR的IF语句的替代方案

时间:2014-02-15 11:18:57

标签: javascript if-statement

我有一个带有文件上传选项的HTML表单,我在客户端快速验证文件格式(为了只允许某些文件扩展名)。

以下代码片段对我来说很好,但我想知道是否有更好或更快的方法来实现相同的,特别是。如果将来允许更多扩展名。

注意:这仅与具有多个OR语句的部分有关,以检查文件扩展名。

到目前为止我的代码(工作):

if( ( (fileNameShort.length <= 100) && (fileNameShort.indexOf('#') == -1) ) && ( (fileFormat == 'bmp') || (fileFormat == 'doc') || (fileFormat == 'docx') || (fileFormat == 'gif') || (fileFormat == 'jpeg') || (fileFormat == 'jpg') || (fileFormat == 'msg') || (fileFormat == 'png') || (fileFormat == 'pdf') ) )

非常感谢对此提出的任何建议,Tim。

2 个答案:

答案 0 :(得分:5)

使用.indexOf()

并使用.toLowerCase()检查小写文件格式

var arr=['bmp','doc','docx','gif','jpg','msg']; //create array filetypes

if(fileNameShort.length <= 100 && fileNameShort.indexOf('#') === -1 && arr.indexOf(fileFormat.toLowerCase()) !== -1)

答案 1 :(得分:3)

您正在使用方式也可以使用括号。

if ( 
  ( 
    ( fileNameShort.length <= 100 ) 
    && ( fileNameShort.indexOf('#') == -1 ) 
  ) 
  && 
  ( 
    (fileFormat == 'bmp') || (fileFormat == 'doc') || (fileFormat == 'docx') || (fileFormat == 'gif') || (fileFormat == 'jpeg') || (fileFormat == 'jpg') || (fileFormat == 'msg') || (fileFormat == 'png') || (fileFormat == 'pdf') 
  ) 
)

相当于

if ( 
  fileNameShort.length <= 100 
  && fileNameShort.indexOf('#') == -1
  && ( 
    fileFormat == 'bmp' || fileFormat == 'doc' || fileFormat == 'docx' || fileFormat == 'gif' || fileFormat == 'jpeg' || fileFormat == 'jpg' || fileFormat == 'msg' || fileFormat == 'png' || fileFormat == 'pdf'
  ) 
)

相当于

if ( 
  fileNameShort.length <= 100 
  && fileNameShort.indexOf('#') == -1
  && /^(bmp|docx?|gif|jpe?g|msg|png|pdf)$/i.test(fileFormat)
)