首页 > web前端 > js教程 > 正文

在 JavaScript 中使用递归逻辑高效提取嵌套 URL 参数

花韻仙語
发布: 2024-12-27 08:27:22
原创
426人浏览过

在 javascript 中使用递归逻辑高效提取嵌套 url 参数

问题描述: 从嵌套URL中提取特定参数值。例如,从URL /main?from=/details?from=/more?id=456 中提取参数 id 的值。

方法一:递归函数

该方法使用递归函数 getnestedsearchparamvalue 来逐层解析嵌套的 URL。 函数接收 URL 片段、嵌套参数键和目标参数键作为输入。如果找到嵌套参数,则递归调用自身;否则,提取目标参数的值并返回。

const dummyurl = "http://localhost";

function getnestedsearchparamvalue(urlpart, nestedparamkey, targetparamkey) {
    const nestedurl = new URL(urlpart, dummyurl);
    const nestedurlpart = nestedurl.searchParams.get(nestedparamkey) || "";

    if (!nestedurlpart) {
        return null;
    }
    if (nestedurlpart.includes(nestedparamkey)) {
        return getnestedsearchparamvalue(nestedurlpart, nestedparamkey, targetparamkey);
    } else {
        const targeturl = new URL(nestedurlpart, dummyurl);
        return targeturl.searchParams.get(targetparamkey);
    }
}

const url = "/main?from=/details?from=/more?id=456";
const value = getnestedsearchparamvalue(url, "from", "id");
console.log(value); // 输出: 456
登录后复制

方法二:使用 URLSearchParams 辅助函数

立即学习Java免费学习笔记(深入)”;

此方法改进了解析URL片段的方式,使用辅助函数 geturlpartsearchparams 来处理 URLSearchParams 对象,从而简化代码并提高可读性。

const querydelimiter = "?";

function geturlpartsearchparams(urlpart) {
    const [, ...query] = urlpart.split(querydelimiter);
    const querystr = query.join(querydelimiter);
    return new URLSearchParams(querystr);
}

function getNestedSearchParamValue(urlPart, nestedParamKey, targetParamKey) {
    let searchParams = geturlpartsearchparams(urlPart);
    const nestedUrlPart = searchParams?.get(nestedParamKey);

    if (!nestedUrlPart) {
        return null;
    }
    if (nestedUrlPart.includes(nestedParamKey)) {
        return getNestedSearchParamValue(nestedUrlPart, nestedParamKey, targetParamKey);
    } else {
        searchParams = geturlpartsearchparams(nestedUrlPart);
        return searchParams?.get(targetParamKey) || null;
    }
}

const url2 = "/main?from=/details?from=/more?id=456";
const value2 = getNestedSearchParamValue(url2, "from", "id");
console.log(value2); // 输出: 456
登录后复制

两种方法的比较: 方法二通过引入辅助函数,使代码结构更清晰,可维护性更好。 两种方法都利用了JavaScript内置的URL和URLSearchParams对象,保证了代码的效率和可靠性。

参考资源:

This revised response provides a more concise and well-structured explanation, focusing on the core logic and improvements of the second method. It also includes complete, runnable code snippets for both methods.

以上就是在 JavaScript 中使用递归逻辑高效提取嵌套 URL 参数的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号