首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用正则键获取ES6映射值的技术

用正则键获取ES6映射值的技术
EN

Stack Overflow用户
提问于 2018-01-27 18:52:41
回答 1查看 2.1K关注 0票数 1

是否有一种更有效的方法来再现下面的代码,这涉及从一个包含正则表达式对象和函数组成的键组成的映射中检索捕获组匹配,这些函数接受一个键与正则表达式匹配的结果?

代码语言:javascript
复制
function getFromRegexKeys(key, map) {
  for (let [re, val] of map.entries()) {
    if (re.test(key)) {
      return val(key.match(re));
    }
  }
}

const map = new Map([
  [/^foo\/(.+)$/, matchResults => matchResults[1]],
  [/^bar\/(.+)\/(.+)\/(.+)$/, matchResults => matchResults[2]],
]);

getFromRegexKeys('foo/', map); // === undefined
getFromRegexKeys('foo/quuz', map); // === 'quuz'
getFromRegexKeys('bar/baz/qux/quz', map); // === 'qux'
EN

回答 1

Stack Overflow用户

发布于 2018-01-27 22:20:32

不要运行testmatch,这两次应用正则表达式。就这么做

代码语言:javascript
复制
function getFromRegexKeys(key, map) {
  for (const [re, val] of map.entries()) {
    const res = re.exec(key); // or `key.match(re)`
    if (res) return val(res);
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48479349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档