2015-05-29 99 views
-2

我想知道是否有辦法避免出現100個 - 1000個if語句。我的應用程序將根據用戶輸入的郊區進行。它會找到5個離郊區最近的商店。if語句的替代

因爲所有的結果都不一樣,有沒有辦法列出每個郊區最近的5家商店,而沒有每個郊區的if語句?只是一個州的一部分,它將是99如果語句。

編輯:

我將添加一個快速模擬了代碼看到的,因爲我還沒有跟我明白了ATM

var locationArray = ["suburb1", "suburb2", "suburb3", "suburb4", "suburb5", "suburb6", "suburb7", "suburb8", "suburb9", "suburb10"]; 

$("#suburbSearch").focusout(function() { 
    if($.inArray($("#suburbSearch").val(), locationArray) != -1) 
    { 
     if($("#suburbSearch").val() == "suburb1") 
     $("#radSec").html(""); 
     $("#radSec").append(enterSuburb1 + enterSuburb2 + enterSuburb3 + enterSuburb4 + enterSuburb5); 
    } 
    else 
     alert("It's Not There"); 
}); 

這是我到目前爲止只是爲了看看它會工作。如果我繼續這樣,我需要做的:

if($("#suburbSearch").val() == "suburb1") 
     $("#radSec").html(""); 
     $("#radSec").append(enterSuburb1 + enterSuburb2 + enterSuburb3 + enterSuburb4 + enterSuburb5); 

一個可笑的金額

+0

如果您顯示樣本,如果您確定最近的郊區的條件,這將是有幫助的。 –

+0

您可以使用該函數而不是if語句。它取決於你的代碼。 – FatalError

+0

我已經添加了我的代碼模擬,因爲我現在還沒有真正的代碼 – John

回答

0

如果你這樣做是爲靜態HTML,那麼你可以使用字典對於這個相對容易。

事情是這樣的:

var locationLookups = {"suburb1": ["store1", "store2", "store3"], 
         "suburb2": ["store4", "store5", "store6"]}; 

var target = locationLookups["suburb1"]; // target contains array of store1-3 

,那麼你只需要仰望的郊區,你會得到所有的商店..如果你想要郊區的列表中,你只需要使用Object.Keys(locationLookups)拿到郊區的陣列。如果你想要整個商店列表,你需要遍歷字典並建立一個列表,或者你可以保留一個單獨的列表。

使用你的例子:

$("#suburbSearch").focusout(function() { 
    if($.inArray($("#suburbSearch").val(), Object.Keys(locationLookups)) != -1) 
    { 
     $("#radSec").html(locationLookups[$("#suburbSearch").val()].join('')); 
    } 
    else 
     alert("It's Not There"); 
}); 

理想情況下,你將有你調用返回基於地理郵編搜索和位置或類似的距離店面列表中的一些網絡服務......但如果你想要對它進行硬編碼,字典是最好的選擇。

+0

我會放棄這一點。謝謝 – John

+0

@John - 我剛剛使用原始示例添加了一個示例,這就是所需的全部內容......(很明顯,您可能需要充實以顯示您實際需要的內容)。 –

+0

每個數組可以輸入的關鍵詞的數量是否有限制? – John