使用正则表达式键从映射中检索值

时间:2020-08-20 04:27:51

标签: javascript node.js regex

我试图基于正则表达式键从地图中获取一个值:

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

1 个答案:

答案 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')) 
相关问题