javascript - 在资源数组中找到正确的动态路径资源的最佳方法是什么?
问题描述
我有以下资源数组,包括动态资源(“guides/:guideId/packages”)和 currentURL(guides/GUIDE007/packages):
const resources = ["guides", "guides/files", "guides/:guideId/packages"];
const currentURL = "guides/GUIDE007/packages";
const getResourceMatch = (resources, currentURL) => { return ... ?? }
const resourceMatch = getResourceMatch(resources, currentURL);
console.log(resourceMatch) // guides/:guideId/packages
当 currentURL 匹配资源或资源格式时,将格式匹配到数组中的最佳方法是什么?
解决方案
我将首先说您可能应该尝试找到一个可以为您进行路由匹配的库。不过,这里有一个路由匹配实现,可以将资源字符串转换为正则表达式来测试 currentURL。
const resources = ["guides", "guides/files", "guides/:guideId/packages", "guides/packages/:packageId"];
const currentURL1 = "guides/GUIDE007/packages";
const currentURL2 = "guides/packages/PKG007";
const getResourceMatch = (resources, currentURL) => {
return resources.find(r => {
const regexStr = '^' + r.replace(/(:\w+)/g,'[\\w-]+') + '$';
const regex = new RegExp(regexStr);
return regex.test(currentURL);
})
}
const resourceMatch1 = getResourceMatch(resources, currentURL1);
const resourceMatch2 = getResourceMatch(resources, currentURL2);
console.log(resourceMatch1) // guides/:guideId/packages
console.log(resourceMatch2) // guides/packages/:packageId
推荐阅读
- sapui5 - Sorting a list in SAPUI5
- php - 在特定日期发送电子邮件提醒并且不知道 cron 工作
- java - 在spring项目中注入库类作为依赖项
- jquery - 当我单击 HTML 网页中的任意位置时,我使用 Jquery 获得了该标签的 ID
- javascript - 表格列宽
- javascript - 根据用户事件滚动到行,R/DT/Shiny,不使用分页
- reactjs - react-select 中的 onKeydown 事件
- mysql - 我不能用 lowerCase 执行 Sql UpperCase
- symfony - 在学说或验证中未定义为关联
- winapi - 为什么 C++ 应用程序中的变量地址在 Windows 上不同