为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Javascript中找到与正则表达式匹配的属性?

如何在Javascript中找到与正则表达式匹配的属性?

波斯汪 2021-05-04 09:16:27
我有一个带有多个属性的对象,这些属性是正则表达式,例如:let a = {   '/^\/a' : 'value 1',   '/^\/b' : 'value 2',   '/^\/d' : 'value 4',} 获得与特定字符串匹配的属性之一的最佳方法是什么?例如,如果试图让'/a'应该回到我'value 1'尝试获取'/c'应返回undefined。
查看完整描述

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

  )


查看完整回答
反对 回复 2021-05-13
?
心有法竹

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"));


查看完整回答
反对 回复 2021-05-13
  • 2 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信