2012-10-14 50 views
2

可能重複:
Alternative to a million IF statementsJavascript:寫if/else語句的更好方法是什麼?也許使用數組?

我是新來編程,所以我知道的很少。 (對不起,發佈一個新手問題)

這是我的問題。

我已經使用「if,else」語句來重定向用戶,取決於他們的國家。

if (country == 'US') { 
    window.location=us 
} 
else { 
    if (country == 'GR') { 
    window.location=gr 
    } 
    else { 
    // (repeated this for 5 times/5 different countries) 
    } 
} 

好吧,現在,我需要將訪問者重定向到他們的州(即加利福尼亞州,亞利桑那州等)。

問題是,如果我繼續使用if/else語句,我知道我必須重複此操作50次,並且javascript代碼最終會顯得很荒謬。

我知道有更好的方法來做到這一點。

任何人都可以顯示如何將多個if/else語句替換爲數組嗎?陣列應該用在這樣的情況下?我對麼?

如果我錯了,請你糾正我&告訴我應該用什麼其他陳述來代替?

謝謝&再一次,我很抱歉提出這樣一個新手問題。

+0

查看switch語句。 –

回答

8

一種可能性是創建地圖:

var countries = { 
    US: us, 
    GR: gr 
}; 

window.location = countries[country]; 

這工作,因爲你可以使用字符串得到一個對象的屬性。例如,如果你有一個foo的屬性的對象:

var myObject = {}; 
myObject.foo = 4; 

那麼你也可以得到foo這樣:

var foosValue = myObject['foo']; 

這基本上是一個非常原始的HashMap的,這是一種常見的數據編程結構。這種模式在JavaScript中很常見。

+5

這可能值得添加一個默認/回退到這個:'window.location = countries [country] || genericpage;'以防萬一用戶位於國家/地區沒有分配值的位置。 –

+0

明白了!我看到我需要使用var /變量。謝謝你回答這個新問題。 –

1
var redirect = { "US": "http:this", "GR" : "http:that }; 

window.location = redirect[country] || alert("what are you trying to achieve?"); 
+0

+1給馬特。 SO可以延遲15分鐘嗎?我雖然在15秒內回答了一個問題。不是幾分鐘。 –

+0

是的。謝謝。這工作。我昨晚開始學習javascript,所以我不太瞭解「var」,但至少我可以弄清楚如何使用它。 –

+0

'var'聲明一個「本地」變量。如果沒有'var',你可能覆蓋了瀏覽器使用的一個非常重要的全局變量和/或擴展了運行時解釋器的「搜索區域」以找到你所指的標籤。這意味着性能的損失。 –

相關問題