【发布时间】:2017-02-16 05:16:06
【问题描述】:
我有一个包含键/值对的 JavaScript 对象,我想用正则表达式搜索一个。这是一个例子:
var map = {
'my/route/one': 'Title1',
'my/route/two': 'Title2',
'/': 'Home'
}
我想要这样的东西:
var myValue = searchByKey(map, '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;
}
但它可能会匹配其他键,例如最后一个 '/'。
您知道如何以优雅的方式实现这一目标吗?
谢谢!
【问题讨论】:
-
为什么不用
indexOf而不是match? -
这是因为与
for循环不同,您不能从forEach循环中中断,您可以使用find而不是forEach。例如:return Object.keys(map).find(function(key) { return routePattern.match(key); });
标签: javascript regex dictionary key match