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

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.lryc.cn/news/509202.html

相关文章:

  • 【面经】2024年软件测试面试题,精选100 道(附答案)
  • LabVIEW水泵性能测试系统
  • React 第十九节 useLayoutEffect 用途使用技巧注意事项详解
  • 重温设计模式--2、设计模式七大原则
  • 【NLP高频面题 - Transformer篇】Transformer的位置编码是如何计算的?
  • 基于SSM(Spring + Spring MVC + MyBatis)框架构建一个图书馆仓储管理系统
  • web的五个Observer API
  • Java基础:抽象类与接口
  • llama.cpp:PC端测试 MobileVLM -- 电脑端部署图生文大模型
  • Web前端基础知识(一)
  • 基于谱聚类的多模态多目标浣熊优化算法(MMOCOA-SC)求解ZDT1-ZDT4,ZDT6和工程应用--盘式制动器优化,MATLAB代码
  • 国标GB28181摄像机接入EasyGBS如何通过流媒体技术提升安防监控效率?
  • [Unity] ShaderGraph动态修改Keyword Enum,实现不同效果一键切换
  • Unity开发哪里下载安卓Android-NDK-r21d,外加Android Studio打包实验
  • FFTW基本概念与安装使用
  • 【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
  • 教师如何打造专属私密成绩查询系统?
  • 【1224】C选填(字符串\0占大小,类大小函数调用,const定义常量,逗号表达式取尾,abs返回值
  • 本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——终篇
  • 复合机器人:开启智能制造新时代
  • 装饰者模式
  • 【机器学习】当教育遇上机器学习:打破传统,开启因材施教新时代
  • 【蓝桥杯每日一题】分糖果——DFS
  • information_schema是什么?
  • 案例分析-THC7984设计问题报告
  • HarmonyOS NEXT 技术实践-基于基础视觉服务的多目标识别
  • 【python】银行客户流失预测预处理部分,独热编码·标签编码·数据离散化处理·数据筛选·数据分割
  • 使用 docker ps 查不到刚刚创建的容器
  • vue2+element 前端表格下载
  • MySQL使用LOAD DATA INFILE方式导入文本文件