2013-01-08 28 views
6

thể trùng lặp:
Check variable equality against a list of values
Javascript: Comparing SINGLE Value Against MULTIPLE Values with OR OperandsJavascript định dạng cho nếu tình trạng

Trước hết tôi mới sang một bên javascript. Xin vui lòng cho tôi biết là có bất kỳ cách đơn giản để hình thành các mã dưới đây.

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

Do something 

} else{ 

    Do something 

} 
+1

Tôi sẽ giữ một loạt các phần mở rộng tệp có thể, và sau đó kiểm tra xem giá trị có nằm trong mảng đó hay không. – Brad

Trả lời

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() - Lưu ý rằng điều này cũng bao gồm thông tin về việc thêm hỗ trợ tương thích ngược cho các trình duyệt cũ (I.E. IE).

+0

Tnx @ briguy37 :). Sẽ tốt hơn nếu bạn giải thích điều này 'FILE_SUPPORTED_EXTENSIONS.indexOf (tên tệp)! = -1' – user1817630

+3

Lưu ý rằng 'indexOf' không được hỗ trợ bởi IE cũ – Bergi

+1

SUPPORTED_FILE_EXTENSIONS là mảng; .indexOf kiểm tra sự xuất hiện của một chuỗi (tên tệp) và trả về vị trí chỉ mục của nó trừ khi nó không được tìm thấy sau đó nó trả về -1. – Syon

1

lẽ switch tuyên bố là một trong những lựa chọn nhanh nhất:

switch (fileName) { 
    case "doc": 
    case "docx": 
    ... 
     // ... 
    default: 
     // else 
} 
9
var validTypes = /docx?|xlsx?|ppt|pdf/; 

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

Lưu ý: dấu hỏi, ?, trong Regular Expression chỉ ra nhân vật trước đây là tùy chọn để nó có thể phù hợp với cả hai docdocx đường ống, |, cho biết or để nó sẽ khớp với doc hoặc xls, v.v.

+0

Rất đẹp, không bao giờ nghĩ để làm điều đó bằng cách sử dụng regex. Không thể đọc được như một mảng, nhưng tôi thích nó! +1 –

3

có thể cái gì đó như

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

Cách dễ đọc nhất, hãy sử dụng cách này mọi lúc! +1 –

0

Bạn có thể định dạng lại nó để làm cho mã dễ đọc hơn:

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

Ngoài ra, bạn có thể làm cho mã ít lặp đi lặp lại sử dụng một cấu trúc như jQuery.inArray() hoặc array.indexOf():

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

tại sao không phải là 'indexOf' gốc? –

+0

@JosephMarikle - Tôi chỉ cần thêm vào đó. Hoặc là tốt, kể từ khi ông đang sử dụng jQuery (hoặc ít nhất là gắn thẻ câu hỏi như vậy), do đó, nó đi xuống đến sở thích cá nhân. –

0

Tạo mảng dễ đọc hơn. Plus sử dụng phương thức $ .inArray() của jQuery. Nó hoạt động giống như .indexOf() với lợi ích bổ sung là nó tương thích với phiên bản cũ của IE có nhiều chức năng mảng bị thiếu.

Các vấn đề liên quan