javascript mapobject中的regexp

时间:2019-02-22 09:42:14

标签: javascript regex

我想从this post编辑javascript 并在地图内使用regexp(如果可能的话):像字符串以“ xyz”开头,但这种语法对我不起作用:

var anchorMap = {
    "A": "/products/A",
    "B": "/products/B",
    /^xyz: "/products/xyz"
}

有可能吗?还是实现这种逻辑的最简单方法是什么?

2 个答案:

答案 0 :(得分:0)

我不建议这样做(我在这里并不真正理解您的目标-但是,您可以将regex设置为字符串并循环进行测试的键。

var anchorMap = {
    "A": "/products/A",
    "B": "/products/B",
    "^.{3}": "/products/xyz"
};

const k = Object.keys(anchorMap).find(e => new RegExp(e).test("xyz"));
console.log(anchorMap[k]);

答案 1 :(得分:0)

您可以将键定义为正则表达式,然后使用find可以看到它与哪个正则表达式键匹配,并从对象中获取该特定键的值。

var anchorMap = {
    "A": "/products/A",
    "B": "/products/B",
    [`^xyz`]: "/products/xyz"
}

let str = 'xyz'

let op = Object.keys(anchorMap).find( e => new RegExp(e).test(str))

console.log(anchorMap[op])