使用正则表达式将值分配给键的最有效的方法是什么?

时间:2018-12-15 00:51:30

标签: javascript dictionary

我有一个值列表,以及正则表达式与键名的字典关联

{/regex1/: k, /regex2/: k2}

我需要根据正则表达式分配值,并使用

构造一本字典
{k: [v0, v1, ...], k2: [v01, v02, ...]}

其中值:= [v0, v1, v01, v02, ...]v0, v1, ...是与regex1匹配的值,而v01, v02, ....是与regex2匹配的值。

最有效的方法是什么?

1 个答案:

答案 0 :(得分:0)

对象的键应该是字符串,而不是正则表达式。您可以使用new RegExp()将字符串转换为相应的正则表达式。或者,您也可以从键名到regexp进行另一种映射:

var dictionary = {k: /regexp1/, k2: /regexp2/};

然后,您可以使用嵌套循环,针对每个正则表达式测试值。

result = {};
Object.entries(dictionary).forEach(([key, re]) => result[key] = values.filter(val => re.test(val)));

如果您真的想使用regexp作为密钥,它将变为:

var dictionary = {"regexp1": "k", "regexp2": "k2"};
Object.entries(dictionary).forEach(([reString, key]) => {
    var re = new RegExp(reString);
    result[key] = values.filter(val => re.test(val));
});