基于具有键值的数组的正则表达式匹配组

问题描述 投票:0回答:1

这是我目前正在执行的操作,以将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',则原始正则表达式将无法正常工作。

javascript regex
1个回答
0
投票

vars更改为键是名称的对象,值是具有key:value对的对象。然后,您可以将这两个组用作主对象和嵌套对象的索引。

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);
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.