首页 > 解决方案 > 在资源数组中找到正确的动态路径资源的最佳方法是什么?

问题描述

我有以下资源数组,包括动态资源(“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 匹配资源或资源格式时,将格式匹配到数组中的最佳方法是什么?

标签: javascriptarraysurldynamicpath

解决方案


我将首先说您可能应该尝试找到一个可以为您进行路由匹配的库。不过,这里有一个路由匹配实现,可以将资源字符串转换为正则表达式来测试 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


推荐阅读