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

我有一个带有多个属性的对象,这些属性是正则表达式,例如:


let a = {

   '/^\/a' : 'value 1',

   '/^\/b' : 'value 2',

   '/^\/d' : 'value 4',

获得与特定字符串匹配的属性之一的最佳方法是什么?


例如,如果试图让'/a'应该回到我'value 1'尝试获取'/c'应返回undefined。


波斯汪
浏览 190回答 2
2回答

红糖糍粑

似乎很奇怪,但这是您可以写的一种方法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  )

心有法竹

键/值对在这里并不是真正有用的,因为不能利用键:您可能需要先尝试所有正则表达式,然后再找到匹配项(或不找到匹配项)。因此,您不妨使用成对的数组。这还具有可以存储正则表达式对象的优点,而在该对象中则必须使用字符串表示形式。所以这是如何工作的: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"));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript