Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中将数组用作字典的键_Javascript_Arrays_Dictionary - Fatal编程技术网

在javascript中将数组用作字典的键

在javascript中将数组用作字典的键,javascript,arrays,dictionary,Javascript,Arrays,Dictionary,在Javascript中,使用数组作为我可以匹配以获取值的键的最佳方式是什么 我希望能够得到一个可以映射到多个键的值 使用开关时,它将如下所示: switch(item) { case "table": // fall through case "desk": // fall through case "chair": // fall through result = "office" break } 在我看来,语法应该是: if (di

在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"]
    ]
},
{
...
}
];
在这里,如果我与“消息”、“短信”或“发送”匹配,我将返回“谁+联系人、消息+文本”,如果我与“查看”或“阅读”匹配,我将返回“谁+联系人”


谢谢你的建议。

为什么你不能用普通物体呢

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

console.log(store["desk"]);
如果问题是重复,则可以将该值设置为引用类型

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

看起来没有比这个更好的答案了,所以到目前为止我还是用这个答案。非常感谢。
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;
}