如何在JavaScript中使用正则表达式搜索键/值对?
我有一个用键/值对填充的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
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,这是有意义的。但你的例子有点误导。也许你可以添加一些(更多)深入的例子来搜索什么以及你想得到什么。