URLSearchParams
构造器创建并返回一个新的URLSearchParams 对象。 开头的'?'
字符会被忽略。平常我们通过查询字符串的方式传参需要通过对字符串进行处理后才能使用。
URLSearchParams()中有帮我们做处理的方法直接返回处理后的数据
格式:
let params = new URLSearchParams('需要查询的URl'); 一般配合location.search使用
URLSearchParams上的方法
has() 查询指定键名是否存在 返回一个Boolean值
get() 获取指定搜索参数的第一个值。
getAll() 获取指定搜索参数的所有值,返回是一个数组。
toString() 返回搜索参数组成的字符串,可直接使用在URL上。
append() 插入一个指定的键/值对作为新的搜索参数
set() 设置一个搜索参数的新值,如果原来有多个值将删除其他所有的值。
delete() 从搜索参数列表里删除指定的搜索参数及其对应的值。
entries() 返回一个iterator,允许遍历该对象中包含的所有键/值对。每一组键值对都是 USVString对象
let paramsString = "?key=java&q=你好啊&q=我叫张三"
let query = new URLSearchParams(paramsString);
// has() 查询指定键名是否存在
console.log(query.has("q") );// true
// get() 获取指定搜索参数的第一个值。
console.log(query.get("q")); // "你好啊";
// getAll() 获取指定搜索参数的所有值,返回是一个数组。
console.log(query.getAll("q"));; // ['你好啊', '我叫张三']
// toString() 返回搜索参数组成的字符串,可直接使用在URL上。
// 我这里使用decodeURI对获取的字符串进行了一下解码 不解码就会乱码
console.log(decodeURI(query.toString())); // 'key=java&q=你好啊&q=我叫张三'
// append() 插入一个指定的键/值对作为新的搜索参数
query.append("q", "我是通过append添加的"); // 添加>>>> q=我是通过append添加的
console.log(decodeURI(query.toString())); // 'key=java&q=你好啊&q=我叫张三&q=我是通过append添加的'
// set() 设置一个搜索参数的新值,如果原来有多个值将删除其他所有的值
query.set("q", "halo!!!")
console.log(decodeURI(query.toString())); // 'key=java&q=halo!!!'
// delete() 从搜索参数列表里删除指定的搜索参数及其对应的值。
query.delete("q");
console.log(decodeURI(query.toString())); // 'key=java&q=halo!!!'