Группа соответствия регулярных выражений на основе массива со значением ключа - PullRequest
0 голосов
/ 27 апреля 2020

Вот что я сейчас делаю, чтобы сопоставить значения в массиве vars с ключами объекта внутри newaction.

Object.keys(newaction).forEach((e) => {
        try {
            var newVal = newaction[e].replace(regex, (_match, group1) => vars[group1]);
            newaction[e] = newVal;
        } catch (err) {
            console.log(err);
        }
    });

Таким образом, каждое соответствующее свойство newaction будет заменено на значение в vars, которое имеет соответствующий ключ.

То, что я сейчас пытаюсь сделать, это заменить значение в newaction на соответствующее значение в vars, но где значение в vars является массивом.

Так, например, vars выглядит следующим образом:

[{
    "name": "test",
    "value": ["HP": '35',
    "Atk": '55',
    "Def": '30',
    "SpA": '50',
    "SpD": '40',
    "Spe": '90',]
}]

Если я теперь хочу сопоставить его в форме newvalue[e], являющейся test[HP], чтобы получить значение '35', оригинал регулярное выражение не работает.

1 Ответ

1 голос
/ 27 апреля 2020

Измените vars на объект, ключом которого является имя, а значением - объект с парами ключ: значение. Затем вы можете использовать две группы в качестве индексов для основного объекта и вложенного объекта.

vars = {
  "test": {
    "HP": '35',
    "Atk": '55',
    "Def": '30',
    "SpA": '50',
    "SpD": '40',
    "Spe": '90'
  }
};

const regex = /(\w+)\[(\w+)\]/;
Object.keys(newaction).forEach((e) => {
  try {
    var newVal = newaction[e].replace(regex, (_match, group1, group2) => vars[group1][group2]);
    newaction[e] = newVal;
  } catch (err) {
    console.log(err);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...