- URLSearchParams 构造函数有很多实用的方法来处理 URL 的查询字符串
- 平常我们通过查询字符串的方式传参需要通过对字符串进行处理后才能使用。
- URLSearchParams()中有帮我们做处理的方法直接返回处理后的数据
格式
URLSearchParams构造函数 通过new实例化,并传入查询的字符串
let params = new URLSearchParams('需要查询的URl');//一般配合location.search使用
必须传入以下格式的字符串
URLSearchParams上的方法
- has() 查询指定键名是否存在 返回一个Boolean值
var paramsString = "?key=java&q=你好啊&q=我叫张三"
var searchParams = new URLSearchParams(paramsString);
// 查询指定键名是否存在
console.log(searchParams.has("q") );// true
- get() 获取指定搜索参数的第一个值。
var paramsString = "?key=java&q=你好啊&q=我叫张三"
var searchParams = new URLSearchParams(paramsString);
// 获取指定搜索参数的第一个值。
console.log(searchParams.get("q")); // "你好啊";
- getAll() 获取指定搜索参数的所有值,返回是一个数组。
var paramsString = "?key=java&q=你好啊&q=我叫张三"
var searchParams = new URLSearchParams(paramsString);
// 获取指定搜索参数的所有值,返回是一个数组。
console.log(searchParams.getAll("q"));; // ['你好啊', '我叫张三']
- toString() 返回搜索参数组成的字符串,可直接使用在URL上。
var paramsString = "?key=java&q=你好啊&q=我叫张三"
var searchParams = new URLSearchParams(paramsString);
// 返回搜索参数组成的字符串,可直接使用在URL上。
// 我这里使用decodeURI对获取的字符串进行了一下解码 不解码就会是:key=java&q=%E4%BD%A0%E5%A5%BD%E5%95%8A&q=%E6%88%91%E5%8F%AB%E5%BC%A0%E4%B8%89&q=%E6%88%91%E6%98%AF%E9%80%9A%E8%BF%87append%E6%B7%BB%E5%8A%A0%E7%9A%84
console.log(decodeURI(searchParams.toString())); // 'key=java&q=你好啊&q=我叫张三'
- append() 插入一个指定的键/值对作为新的搜索参数
var paramsString = "?key=java&q=你好啊&q=我叫张三"
var searchParams = new URLSearchParams(paramsString);
searchParams.append("q", "我是通过append添加的"); // 添加>>>> q=我是通过append添加的
console.log(decodeURI(searchParams.toString())); // 'key=java&q=你好啊&q=我叫张三&q=我是通过append添加的'
- set() 设置一个搜索参数的新值,如果原来有多个值将删除其他所有的值。
var paramsString = "?key=java&q=你好啊&q=我叫张三"
var searchParams = new URLSearchParams(paramsString);
searchParams.set("q", "halo!!!")
console.log(decodeURI(searchParams.toString())); // 'key=java&q=halo!!!'
- delete() 从搜索参数列表里删除指定的搜索参数及其对应的值。
var paramsString = "?key=java&q=你好啊&q=我叫张三"
var searchParams = new URLSearchParams(paramsString);
searchParams.delete("q");
console.log(decodeURI(searchParams.toString())); // 'key=java&q=halo!!!'
- entries() 返回一个iterator,允许遍历该对象中包含的所有键/值对。每一组键值对都是 USVString对象
var paramsString = "?key=java&q=你好啊&q=我叫张三"
var searchParams = new URLSearchParams(paramsString);
var fn = searchParams.entries()
for (var pair of fn) {
console.log(pair);
}
// 打印结果
// ['key', 'java']
// ['q', '你好啊']
// ['q', '我叫张三']
- **sort() **方法对包含在此对象中的所有键/值对进行排序,并返回undefined。排序顺序是根据键的Unicode代码点。该方法使用稳定的排序算法 (即,将保留具有相等键的键/值对之间的相对顺序)。
var paramsString = "?b=1&a=2&c=3&d=2"
var searchParams = new URLSearchParams(paramsString);
searchParams.sort();
console.log(decodeURI(searchParams.toString())); //a=2&b=1&c=3&d=2