我有一个值列表,以及正则表达式与键名的字典关联
{/regex1/: k, /regex2/: k2}
我需要根据正则表达式分配值,并使用
构造一本字典{k: [v0, v1, ...], k2: [v01, v02, ...]}
其中值:= [v0, v1, v01, v02, ...]
和v0, v1, ...
是与regex1匹配的值,而v01, v02, ....
是与regex2匹配的值。
最有效的方法是什么?
答案 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));
});