JavaScript 解析 URL 参数推荐使用 URLSearchParams API,它原生支持、自动解码、处理重复键和空值;从完整 URL 或 query string 创建实例后,可用 Object.fromEntries 转对象(单值)或手动遍历 entries 保留多值;旧环境需手写解析并显式 decodeURIComponent。

JavaScript 中解析 URL 参数成对象,最直接的方式是用 URLSearchParams API,它原生支持、语法简洁、兼容性良好(现代浏览器和 Node.js 12+ 都支持)。
用 URLSearchParams 解析查询字符串
这是推荐的标准做法。它能自动处理编码、重复键、空值等常见情况。
- 从完整 URL 解析:
const params = new URLSearchParams(new URL('https://example.com/?name=张三&age=25').search); - 从 query string 解析(如
"name=张三&city=%E4%B8%8A%E6%B5%B7"):const params = new URLSearchParams(queryString); - 转成普通对象:
Object.fromEntries(params)—— 注意:这会把同名参数的多个值只保留最后一个
处理重复参数(如 ?tag=a&tag=b)
默认 URLSearchParams 的 get() 只返回第一个值,getAll() 才能拿到全部。要保留多值,需手动构造对象:
- 遍历所有键值对:
const obj = {};<br>for (const [key, value] of params) {<br> if (!obj[key]) obj[key] = [];<br> obj[key].push(value);<br>} - 或更简洁写法:
Array.from(params.entries()).reduce((acc, [k, v]) => {<br> (acc[k] = acc[k] || []).push(v);<br> return acc;<br>}, {});
兼容旧环境(IE 等不支持 URLSearchParams)
可手写轻量解析函数,核心是分割 & 和 =,再逐个 decodeURIComponent:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
立即学习“Java免费学习笔记(深入)”;
- 先去掉开头的
?(如有); - 用
.split('&')拆成键值对数组; - 每项用
.split('=', 2)分开 key 和 value(防止 value 含 =); - 对 key 和 value 分别解码,存入对象(注意处理无 value 的情况,如
?debug)。
注意编码与特殊字符
URL 中中文、空格、符号都会被编码(如 张三 → %E5%BC%A0%E4%B8%89),URLSearchParams 内部已自动解码,无需额外调用 decodeURIComponent;但手写解析时必须显式解码,否则会得到乱码。
不复杂但容易忽略

















