当前位置: 首页 > news >正文

封装 获取paramsByKey 方法

功能介绍

这段代码定义了一个名为 getParamsByKey 的函数,用于从当前页面的 URL 查询参数中提取指定键(key)对应的值。函数通过解析 window.location.search 获取查询参数,并返回匹配键的值。

代码解析

输入参数

  • key: string:需要查询的 URL 参数键名。

逻辑流程

  1. 检查当前环境是否支持 window 对象(确保在浏览器端运行)。
  2. 获取 window.location.search,即 URL 中 ? 后的查询字符串。
  3. 移除 ? 并分割参数为键值对数组(split('&'))。
  4. 遍历数组,匹配键名与输入 key 一致的项,提取对应值。

返回值

  • 返回匹配的字符串值;若无匹配项,返回空字符串 ''

使用示例

假设当前 URL 为 https://example.com?name=test&id=123

const name = getParamsByKey('name'); // 返回 'test'
const id = getParamsByKey('id');     // 返回 '123'
const unknown = getParamsByKey('foo'); // 返回 ''

注意事项

  1. 环境兼容性:函数内校验了 window 对象存在性,避免在非浏览器环境(如 SSR)报错。
  2. 参数格式:仅支持简单键值对(如 key=value),复杂值需额外处理(如 URL 解码)。
  3. 默认值:未匹配时返回空字符串,调用方需自行处理边界情况。

优化建议

  1. 添加 decodeURIComponent 处理值中的特殊字符(如 %20)。
  2. 扩展为返回全部参数的接口(如 getAllParams),减少多次调用开销。
  3. 使用 URLSearchParams API(现代浏览器支持)简化逻辑:
    export const getParamsByKey = (key: string): string => {let value = '';if (typeof window !== 'undefined') {const { search } = window.location;const queryArr = search.replace('?', '').split('&');queryArr.forEach((ele) => {if (ele && ele.split('=')[0] === key) {// eslint-disable-next-line prefer-destructuringvalue = ele.split('=')[1];}});}return value;
    };
    

http://www.lryc.cn/news/579507.html

相关文章:

  • 毕业设计(启智模块化机器人的组装与K5的使用
  • 使用Visual Studio 2022创建CUDA编程项目
  • 车载交换机动态MAC学习和静态MAC绑定如何获取MAC地址表
  • jenkins角色权限
  • 这才叫窗口查询!TDEngine官方文档没讲透的实战玩法
  • 微信小程序41~50
  • 佰力博科技与您探讨压电材料的原理与压电效应的应用
  • C++(std::sort)
  • 【轨物洞见】光伏机器人与组件、支架智能化协同白皮书
  • 如何避免服务器出现故障情况?
  • SPLADE 在稀疏向量搜索中的原理与应用详解
  • 【NLP入门系列四】评论文本分类入门案例
  • ubuntu 6.8.0 安装xenomai3.3
  • lspci查看PCI设备详细信息
  • OpenCV篇——项目(二)OCR文档扫描
  • Rust方法语法:赋予结构体行为的力量
  • ConcurrentHashMap 原理
  • Linux多线程(十二)之【生产者消费者模型】
  • 汽车ECU产线烧录和检测软件怎么做?
  • Flutter 3.29+使用isar构建失败
  • HarmonyOS ArkTS卡片堆叠滑动组件实战与原理详解(含源码)
  • Java网络编程:TCP/UDP套接字通信详解
  • I/O 进程 7.2
  • 在Ubuntu 24.04主机上创建Ubuntu 14.04编译环境的完整指南
  • (一)复习(模块注入/minimal api/EF和Dapper实现CQRS)
  • Ubuntu Gnome 安装和卸载 WhiteSur-gtk-theme 类 Mac 主题的正确方法
  • Frida:配置自动补全 in VSCode
  • TCP 三次握手与四次挥手详解
  • MyBatis 之基础概念与框架原理详解
  • RabbitMQ 通过HTTP API删除队列命令