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

JS获取URL中参数值的4种方法

方法1:现代浏览器都支持 URL 和 URLSearchParams 对象,可以很方便地从URL中提取参数

// 假设当前URL为 "https://example.com/?name=John&age=30"
const url = new URL(window.location.href); 
// 或者你可以直接传入一个URL字符串
const name = url.searchParams.get('name'); // "John"
const age = url.searchParams.get('age'); // "30"
console.log(name, age);

方法2:使用正则表达式

可以使用正则表达式匹配URL参数,这种方法相对较低效且较复杂,但也可以做到。

function getQueryParam(name) {
  const regex = new RegExp('[?&]' + name + '=([^&#]*)', 'i')
  const results = regex.exec(window.location.href)
  return results ? decodeURIComponent(results[1]) : null
}
// 假设当前URL为 "https://example.com/?name=John&age=30"
const name = getQueryParam('name'); // "John"
const age = getQueryParam('age'); // "30"
console.log(name, age)

方法3:使用 split 和 reduce

可以通过 split 方法手动拆分查询参数,并用 reduce 将其转化为对象。

function getQueryParams() {    
    return window.location.search
    .substring(1) // 去掉 ?        
    .split('&') // 按 & 拆分       
    .reduce((params, param) => {            
        const [key, value] = param.split('=');            
        params[decodeURIComponent(key)] = decodeURIComponent(value || '');            
        return params;        
    }, {});
}
// 假设当前URL为 "https://example.com/?name=John&age=30"
const params = getQueryParams();
const name = params['name'];// "John"
const age = params['age']; // "30"
console.log(name, age);

方法4:使用 location.search 和自定义函数

location.search 上构建自己的解析函数,此方法比较简单。

function getQueryParameter(name) {
  const params = new URLSearchParams(location.search)
  return params.get(name)
}
// 假设当前URL为 "https://example.com/?name=John&age=30"
const name = getQueryParameter('name'); // "John"
const age = getQueryParameter('age'); // "30"
console.log(name, age)


http://www.kler.cn/a/454216.html

相关文章:

  • javaweb 04 springmvc
  • openGauss与GaussDB系统架构对比
  • 7. petalinux 根文件系统配置(package group)
  • Milvus×EasyAi:如何用java从零搭建人脸识别应用
  • 校史馆云展厅适合远程教学吗?
  • YOLOv9-0.1部分代码阅读笔记-benchmarks.py
  • 001集—— 块表、快表记录、块参照详解 —— ifox CADc#二次开发
  • Docker下TestHubo安装配置指南
  • 快速理解24种设计模式
  • Ubuntu 24.04 APT源配置详解
  • 【Linux】top中的VIRT=RES+SHR的等式是否成立?
  • QT多媒体开发(三):使用QMediaPlayer播放视频
  • 学习记录—正则表达式-基本语法
  • k8s,service如何找到容器
  • Visual Studio Code(VS Code)配置C/C++环境
  • 社交媒体形象打造中的“号设化”与开源AI智能名片商城小程序的应用
  • 嵌入式学习-QT-Day07
  • SQLite本地数据库的简介和适用场景——集成SpringBoot的图文说明
  • 【TaskBasics】- KRTS C++示例精讲(3)
  • 什么是 DevOps 自动化?
  • C++ STM32 F4xx USART LL库 DMA + IDLE ISR 驱动裸机 +FreeRTOS 任务通知
  • (六)循环神经网络_基本的RNN
  • Wireshark软件下载安装及基础
  • Nginx界的天花板-Oracle 中间件OHS 11g服务器环境搭建
  • JVM内存模型、垃圾回收机制及简单调优方式
  • 重温设计模式--10、单例模式