2016-04-21 116 views
0

在JavaScript中,有沒有一種方法可以從列表中選擇。我記得在Visual Basic中做這件事。如果然後從列表中選擇

所以不是

if (id == "category1") {i = 1}; 
if (id == "category2") {i = 2}; 
if (id == "category3") {i = 3}; 

有什麼樣

if.select (

    category1 = 1 
    category2 = 2 
    category3 = 3 
+1

你在尋找['switch'語句](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/switch)嗎? –

+0

@JamesThorpe開關是馬上跳出來給我的 – mhodges

+0

開關已經足夠接近你以後的... –

回答

2

使用的字典(作品類似ENUM):

var dictionary = {"category1": 1, "category2": 2, "category3": 3}; 
i = dictionary[id] 

JSFiddle

這裏是一個開關案例:

switch(id){ 
    case 'category1': 
    i = 1; 
    break; 
    case 'category2': 
    i = 2; 
    break; 
    case 'category3': 
    i = 3; 
    break; 
} 

我喜歡過的switch-case方法的字典的方法,因爲它是一個位代碼少寫每次你添加一個新的類別。

+0

爲什麼選擇投票? –

+0

因爲這是一個糟糕的答案 - 如果你有50個類別會發生什麼?這比OP已經有多好? – Shomz

+0

@Shomz如果這些類別是「示例」,那該怎麼辦:1,「用例」:2,「etc」:3?你的答案解析,假設類別以字符串「category」開頭。 –

0

可以條條框框:

var i = id.split('category')[1]; 

你可以把它的功能:

function getCategoryId(id){ 
    return id.split('category')[1]; 
} 

然後只是把它想:

var i = getCategoryId('category1'); 

您還可以使用substr,它將執行最好的(在談論納秒,雖然)。


看到它住在這裏:

var id = 'category2'; 
 
function getCategoryId(id){ 
 
    return id.split('category')[1]; 
 
} 
 
alert(getCategoryId(id));


或者只是使用switch

switch(id){ 
    case 'category1': 
    i = 1; 
    break; 
    case 'category2': 
    i = 2; 
    break; 
    case 'category3': 
    i = 3; 
    break; 
} 
+0

好的,我想出了開關功能。我對我在https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/switch上看到的代碼感到困惑。你的例子非常清楚。現在我看到它了,「Case」是Visual Basic中使用的語法。 – Matt

+0

是的,'console.log'可能是調試JS中最快/最簡單的方法。不過,我強烈建議您使用我的第一段中的一種方法,因爲只要它們的格式爲「categoryXX」',就不必在添加/刪除類別時進行任何手動工作。 – Shomz

+0

我結束了使用「詞典」,但切換也是一個非常好的選擇。當我提出這個問題並且很好地瞭解未來的項目時,這就是我想到的。啊! 。 。 。 console.log。 。 。我現在明白了。我在兩天內學到了很多關於JavaScript的知識。謝謝你的幫助。 – Matt

相關問題