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



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

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

我需要根据正则表达式分配值,并使用构建一个字典

{k: [v0, v1, ...], k2: [v01, v02, ...]}

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

做这件事最有效的方法是什么?

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

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

然后可以使用嵌套循环,针对每个regexp测试值。

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));
});

最新更新