2 回答
TA贡献1815条经验 获得超6个赞
似乎很奇怪,但这是您可以写的一种方法lookup-
const data =
{ "^\/a": 'value1'
, "^\/b": 'value2'
, "^\/d": 'value3'
}
const lookup = (str = "", o = {}) =>
( Object
.entries (o)
.find (([ k, _ ]) => (new RegExp (k)) .test (str))
|| []
)
[1]
console .log
( lookup ('/a', data) // value1
, lookup ('/b', data) // value2
, lookup ('/c', data) // undefined
)
TA贡献1866条经验 获得超5个赞
键/值对在这里并不是真正有用的,因为不能利用键:您可能需要先尝试所有正则表达式,然后再找到匹配项(或不找到匹配项)。因此,您不妨使用成对的数组。这还具有可以存储正则表达式对象的优点,而在该对象中则必须使用字符串表示形式。
所以这是如何工作的:
const regexes = [
[/^\/a/, 'value 1'],
[/^\/b/, 'value 2'],
[/^\/d/, 'value 4'],
];
function getValue(s) {
const i = regexes.findIndex(([regex]) => regex.test(s));
if (i > -1) return regexes[i][1];
}
console.log(getValue("/b"));
添加回答
举报