我有這個代碼,使用if語句。 我想盡量減少這個。如何最小化if語句與JavaScript中的文件類型?
var str = "";
var isPreview=true;
var dl = Files.findOne({_id:item._id}).link();
var filename = item.name.split('.').pop().toLowerCase();
if(filename == "wav" || filename == "mp3" || filename == "ogg") {
str = "fa fa-file-audio-o";
isPreview=false;
}
else
if(filename == "jpg" || filename == "jpeg" || filename == "gif" || filename == "bmp" || filename == "png")
str = "fa fa-file-image-o";
else
if(filename == "flv" || filename == "wmv" || filename == "mp4" || filename == "3gp" || filename == "webm") {
str = "fa fa-file-movie-o";
isPreview=false;
}
else
if(filename == "pdf")
str = " fa fa-file-pdf-o";
else
if(filename == "txt" || filename == "rtf")
str = " fa fa-file-text-o";
else
if(filename == "xls" || filename == "xlsx") {
str = " fa fa-file-excel-o";
isPreview=false;
}
else
if(filename == "doc" || filename == "docx") {
str = " fa fa-file-word-o";
isPreview = false;
}
else
if(filename == "ppt" || filename == "pptx") {
str = " fa fa-file-powerpoint-o";
isPreview = false;
}
else
if(filename == "zip" || filename == "rar") {
str = " fa fa-file-zip-o";
isPreview = false;
}
else{
isPreview=false;
str = " fa fa-file";
}
if(Files.findOne({_id:item._id}).infected){
isPreview=false;
str = " fa fa-ban";
}
執行此代碼後,輸出應該是一個字符串和一個布爾值。 如何使用數組來解決這個問題?
正如您所看到的,在每個if else語句中,它們具有不同數量的表達式。有時它只會檢查一種文件類型。有時它會檢查多種文件類型。
如何在這個問題中使用數組或對象?
這不是最小化,但可以將其更改爲switch/case語句。看起來更乾淨(特別是因爲你只有文件名上的if/else分支) –
是的,這個評論也幫助我。但我更喜歡妮娜的答案,以便更多地減少答案。 – JMA
我還向帶有switch語句的答案添加了+1。 – JMA