在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"]
]
},
{
...
}
];
这里如果我得到“消息”,“短信”或“发送”的匹配我返回“谁+联系人,消息+文本”,如果我得到“查看”或“阅读”的匹配我返回“谁” +接触“
感谢任何想法。
答案 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;
}