2011-06-07 163 views
0

在JavaScript中,使用數組作爲關鍵字的最佳方式是什麼?使用數組作爲javascript中的字典的關鍵字

我想要做的就是獲得一個可映射到多個鍵的值。

使用一個開關就應該是這樣的:

switch(item) 
{ 
    case "table": // fall through 
    case "desk": // fall through 
    case "chair": // fall through 
     result = "office" 
     break 
} 

在我腦海中的語法是:

if (dict[0].key.contains(item)) return dict[0].value 

我不希望使用交換機作爲鍵和值需要被動態分配。

目前我正在設置一個對象,它有兩個不同的數組,它們需要保持同步才能返回正確的值,這看起來不太理想。

var grammar = 
[ 
{ 
    "app": "sms", 
    "items": 
    [ 
     [ "message","sms", "send"], 
     [ "view", "read"] 
    ], 
    "terms": 
    [ 
     [ "who+contact", "message+text" ], 
     [ "who+contact"] 
    ] 
}, 
{ 
... 
} 
]; 

在這裏,如果我得到一個匹配的「消息」,「短信」或「發送」我回來「誰+聯繫人,短信+文字」,如果我得到一個匹配的「查看」或「讀取」我返回「誰+聯繫」

感謝您的任何想法。

回答

1

爲什麼你不能只使用一個普通的對象?

var store = { 
    "table":"office", 
    "desk":"office", 
    "chair":"office" 
}; 

console.log(store["desk"]); 

如果問題是重複,可以將該值設置爲引用類型。

var office = {value:"office"}; 
var store = { 
    "table":office, 
    "desk":office, 
    "chair":office 
}; 
1
var terms = [ 
    0   : [ "who+contact" , "message+text"], 
    "whatever" : [ "who+contact" ] 
]; 

var items = [ 
    "message" : 0, 
    "sms"  : 0, 
    "send" : 0, 
    "view" : "whatever", 
    "read" : "whatever" 
]; 


function getTerm(match) { 
    if (item[match]!==null) { 
     return terms[ items[match] ]; 
    } 
    return null; 
} 
+0

它不象似乎還有比這樣更好的答案,所以我用這個答案至今下去。謝謝。 – voidref 2011-06-07 20:55:45