使用数组作为javascript中字典的键

时间:2011-06-07 19:42:49

标签: javascript arrays dictionary

在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"]
    ]
},
{
...
}
];

这里如果我得到“消息”,“短信”或“发送”的匹配我返回“谁+联系人,消息+文本”,如果我得到“查看”或“阅读”的匹配我返回“谁” +接触“

感谢任何想法。

2 个答案:

答案 0 :(得分: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 :(得分: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;
}