Какой самый эффективный способ создания словаря с помощью регулярных выражений для распределения значений по ключам? - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть список значений и словарная ассоциация регулярного выражения с именем ключа

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

Мне нужно распределить значения в соответствии с регулярным выражением и создать один словарь с

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

где значения: = [v0, v1, v01, v02, ...] и v0, v1, ... - это значения, соответствующие регулярному выражению regex1, а v01, v02, .... соответствуют регулярному выражению regex2.

Какой самый эффективный способ сделать это?

1 Ответ

0 голосов
/ 15 декабря 2018

Ключи объекта должны быть строками, а не регулярными выражениями.Вы можете использовать new RegExp() для преобразования строки в соответствующее регулярное выражение.Или вы можете сделать сопоставление другим способом, от имен ключей до регулярного выражения:

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

Затем вы можете использовать вложенный цикл, проверяя значения по каждому регулярному выражению.

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

Есливы действительно хотите использовать регулярное выражение в качестве ключа:

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));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...