URLSearchParams
是 JavaScript 提供的 URL 查询字符串处理工具,用于解析、操作和构建 URL 的查询参数(即 ?
后面的部分)。它支持现代浏览器(IE 除外),是替代手动操作字符串的更优雅方案。
1. 基本用法
1.1 创建 URLSearchParams
对象
// 方式1:从字符串创建
const params1 = new URLSearchParams("name=John&age=30");// 方式2:从键值对数组创建
const params2 = new URLSearchParams([["name", "John"],["age", "30"],["hobby", "coding"]
]);// 方式3:从对象创建(需手动转换)
const obj = { name: "John", age: "30" };
const params3 = new URLSearchParams(Object.entries(obj));
1.2 常用方法
方法 | 作用 | 示例 |
| 获取指定参数的值 |
|
| 获取所有同名参数的值(数组) |
|
| 检查参数是否存在 |
|
| 设置/覆盖参数 |
|
| 追加参数(可重复) |
|
| 删除参数 |
|
| 转换为查询字符串 |
|
| 遍历键/值/键值对 |
|
2. 实际应用场景
2.1 解析当前页面的查询参数
// 当前URL: https://example.com?name=John&age=30
const params = new URLSearchParams(window.location.search);
console.log(params.get("name")); // "John"
console.log(params.get("age")); // "30"
2.2 构建 AJAX 请求的查询参数
const params = new URLSearchParams();
params.append("page", "1");
params.append("limit", "10");fetch(`https://api.example.com/data?${params}`).then(res => res.json());
// 实际请求URL: https://api.example.com/data?page=1&limit=10
2.3 处理表单数据
<form id="search-form"><input type="text" name="keyword" value="JavaScript"><input type="number" name="page" value="1">
</form><script>const form = document.getElementById("search-form");const params = new URLSearchParams(new FormData(form));console.log(params.toString()); // "keyword=JavaScript&page=1"
</script>
3. 特殊场景处理
3.1 处理数组参数
const params = new URLSearchParams();
params.append("color", "red");
params.append("color", "blue");
console.log(params.toString()); // "color=red&color=blue"// 获取所有值
console.log(params.getAll("color")); // ["red", "blue"]
3.2 处理空格和特殊字符
const params = new URLSearchParams();
params.set("query", "vue.js");
console.log(params.toString()); // "query=vue.js"(自动编码)// 手动解码
const decoded = decodeURIComponent(params.toString());
3.3 与 URL
对象配合使用
const url = new URL("https://example.com/search");
const params = new URLSearchParams(url.search);
params.set("q", "前端开发");
url.search = params.toString();console.log(url.href);
// "https://example.com/search?q=%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91"(自动编码中文)