如何在JavaScript中使用正则表达式搜索键/值对?

如何在JavaScript中使用正则表达式搜索键/值对?,javascript,regex,dictionary,key,match,Javascript,Regex,Dictionary,Key,Match,我有一个用键/值对填充的JavaScript对象,我想用正则表达式搜索一个。下面是一个例子: var map = { 'my/route/one': 'Title1', 'my/route/two': 'Title2', '/': 'Home' } 我想要这样的东西: var myValue=searchByKey(映射'my/route/two') 我一开始是这样做的: searchByKey: function (map, routePattern) { v

我有一个用键/值对填充的JavaScript对象,我想用正则表达式搜索一个。下面是一个例子:

var map = {
    'my/route/one': 'Title1',
    'my/route/two': 'Title2',
    '/': 'Home'
}
我想要这样的东西:

var myValue=searchByKey(映射'my/route/two')

我一开始是这样做的:

searchByKey: function (map, routePattern) {
    var foundTitle,
        route;
    for (route in map) {
        if (routePattern.match(route)) {
            foundTitle = map[route];
            break;
        }
    }
    return foundTitle;
}
它成功了,太棒了。然后,我想有一些更实用的东西,所以我想到了这个:

function searchByKey(map, routePattern) {
    var foundTitle;
    Object.keys(map).forEach(function(key) {
        if (routePattern.match(key)) {
            foundTitle = map[key];
        }
    });
    return foundTitle;
}
但它可能与其他键匹配,如最后一个
“/”

你知道如何以优雅的方式实现这一点吗


谢谢

你可以简单地做到这一点

功能搜索键(地图、路线){
return map[route]?map[route]:'not found'//在给定无效密钥时返回'not found'
}
变量映射={
“我的/路线/一”:“标题1”,
“我的/路线/两个”:“标题2”,
“/”:“家”
}
var myValue=searchByKey(映射'my/route/two')

console.log(myValue)
为什么不直接使用该键

函数searchByKey(对象,键){
返回对象[键];
}
变量映射={
“我的/路线/一”:“标题1”,
“我的/路线/两个”:“标题2”,
“/”:“家”
}
var myValue=searchByKey(映射'my/route/two');

console.log(myValue)
为什么不使用
indexOf
而不是
match
?这是因为与
for
循环不同,您不能从
forEach
循环中断,您可以使用
find
而不是
forEach
。例如:
returnobject.keys(map).find(函数(键){returnroutepattern.match(键);})
禁止返回falsy值。否则它将返回
未定义的
,因为我必须存储所有路由,包括带有参数的路由。例如,标题为“我的个人资料”的页面可以显示具有不同路径的多个视图,如“个人资料/信息”、“个人资料/密码”等。为了不必存储所有路径,我希望能够使用match.ok,这是有意义的。但你的例子有点误导。也许你可以添加一些(更多)深入的例子来搜索什么以及你想得到什么。