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

在 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对象,保证了代码的效率和可靠性。

参考资源:

URLURL

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 参数的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2644067.html

(0)
上一篇 2025年3月7日 07:10:16
下一篇 2025年3月5日 18:14:46

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JavaScript 中的异步编程

    JavaScript 作为单线程语言,一次只能执行一个任务,这可能导致复杂任务执行缓慢。为解决此问题,JavaScript 提供了异步编程机制,允许脚本在等待异步操作完成的同时继续执行其他任务。本文将介绍 JavaScript 异步编程的基…

    2025年3月7日
    200
  • 你从来不知道存在的令人惊叹的 Github 存储库

    GitHub:程序员的秘密花园 学习编程容易,编写高质量代码却难。GitHub是程序员的知识宝库,汇聚了无数优秀代码,助你提升编程技能。探索GitHub,学习简洁高效的代码风格,提升编程水平。 精选GitHub优质项目推荐: notwald…

    2025年3月7日
    200
  • 使用 JS 管理国家和货币

    处理全球化的项目时,管理国家和货币列表及其格式化方式可能很复杂。 country-currency-utils npm 包应运而生,它以 TypeScript 编写,旨在简化这个过程,无论是在前端还是后端。该包避免在代码库中直接包含庞大的国…

    2025年3月7日
    200
  • 使用 Nodejs 安排删除过程的一种方法

    使用 Node.js 的 node-cron 包实现定时删除 本文介绍如何利用 Node.js 的 node-cron 包,实现对数据库用户数据的定时删除功能。 1. 安装 node-cron 包 首先,使用 npm 安装 node-cro…

    2025年3月7日
    200
  • 初学者 Web 开发人员应避免的首要问题

    web开发初体验:新手常犯的五个错误及应对策略 初入Web开发领域,令人兴奋之余,也容易掉入一些陷阱。本文将总结新手常犯的五个错误,并提供相应的解决方案,助你顺利开启Web开发之旅。 错误一:过早放弃,过度关注设计 许多新手在学习HTML之…

    2025年3月7日 编程技术
    200
  • 整洁代码的艺术:为什么它不仅仅是编写代码

    编写代码很容易,但编写干净、易于维护的代码却是一门艺术。 干净的代码并非仅仅是代码美观,更是关乎软件的可读性、可理解性和可扩展性。它决定着项目是蓬勃发展还是沦为噩梦。本文将探讨干净代码的重要性、如何让开发者和企业受益,以及提升编码实践的实用…

    2025年3月7日
    200
  • TypeScript 与类型接口:差异和最佳用例

    本文深入探讨 TypeScript 类型与接口的根本区别,并指导您选择合适的方案。两者都用于定义对象结构,但在语法、继承和扩展性方面存在差异。我们将详细分析各自特性,例如类型定义联合类型和交叉类型,以及接口的扩展和合并能力。最后,结合项目可…

    2025年3月7日
    200
  • LiveAPI:用于生成、组织、搜索、集成和标准化 API 文档的超级便捷工具

    Hexmos,一家经验丰富的初创公司,致力于打造用户友好的应用。我们8-10人的团队已运营3.5年,积累了数十个大型代码库和数百个API端点。 API管理面临的挑战 随着规模扩张,我们遇到了以下问题: API定位困难:难以在众多代码库中快速…

    2025年3月7日
    200
  • 如何使用 Node.js 和 Express 设置 TypeScript

    使用 Node.js 和 Express 通过 TypeScript 创建服务器是使用 JavaScript 的一个很好的替代方案,因为它可以更轻松地管理复杂的应用程序,并且在您需要与分布式开发团队协作时提供帮助。 使用 Node.js 和…

    2025年3月7日 编程技术
    200
  • 态射环码

    这段代码创建了一个动态的渐变色环形动画效果。让我们逐一分析代码的各个部分: HTML 结构: 代码使用一个 div 元素作为容器 (ring-container),并在其中嵌套另一个 div 元素 (ring) 来创建环形。ring 元素的…

    2025年3月7日
    200

发表回复

登录后才能评论