我试图基于正则表达式键从地图中获取一个值:
const nameMapping = new Map([
['Name1', 'This is some name'],
['Name1_2', 'This is another name'],
[/^[A]{1}[0]{2}/, 'Name from regex']
])
console.log(nameMapping.get('Name1'))
console.log(nameMapping.get('Name1_2'))
console.log(nameMapping.get('A0012')) // prints undefined
基本上,如果键以A00
开头,则它应该返回Name from regex
字符串。
在此示例中:
console.log(nameMapping.get('A0012'))
如何使它打印Name from regex
?
答案 0 :(得分:0)
假设您仅使用字符串或正则表达式作为映射的键,则可以编写如下的自定义函数来首先找到匹配的键,然后获取其值。
function getValue(map, keyToGet) {
for (let key of nameMapping.keys()) {
let isMatching = (typeof key === 'string') ? (key === keyToGet) : key.test(keyToGet);
if (isMatching) {
return map.get(key);
}
}
return undefined;
}
然后您可以使用该函数获取值。
console.log(getValue(nameMapping, 'Name1'))
console.log(getValue(nameMapping, 'Name1_2'))
console.log(getValue(nameMapping, 'A0012'))