可以为Map中的值设置多个键吗?如果没有那么怎么做?

时间:2018-01-26 22:47:28

标签: javascript

我正在试图找出是否有办法在javaScript中为Map中的值设置多个键。 Mozilla上的documentation似乎没有提示,所以我不确定。一个例子是我以字符串的形式从用户那里获得输入,我想将该字符串与具有相同名称的匹配对象匹配。亚历山大是其中一个对象的名称。但是,我也希望“alex”或者“ali”成为可接受的输入。在下面的当前表格中,只有“alexander”会匹配alexander对象。如果不能用map做这个,我想知道什么是一个好方法我可以匹配用户字符串输入与不涉及使用一堆if语句的对象名称(可能有一些名称有几十个昵称)。

var john = {
  age: 20
  wt: 185
  favFood: pizza
};

// alexander, wesley etc. all have the same fields, just different values

// Map (used to validate user input)
const personByKey = new Map([
  ["john", john],
  ["alexander", alexander] // I also want "alex" to be acceptable for alexander obj
  ["wesley", wesley]
]);

2 个答案:

答案 0 :(得分:3)

我想你想要

const personByKey = new Map([
  ["john", john],
  ["alexander", alexander],
  ["alex", alexander],
  ["wesley", wesley]
]);

答案 1 :(得分:0)

我认为你需要一个包含所有可能的昵称的主查找字典,这些昵称映射到在personByKey地图中使用的键。

let nicknameMap = {
  "alex": "alexander",
  "al": "alexander",
  "alexander": "alexander",
  "john": "john",
  "j-dog": "john"
   "al": "alexander",
}

var person = personByKey[nicknameMap["al"]];
相关问题