URLSearchParams 对象转url参数
最后更新于:2022-04-02 03:25:51
[TOC]
## URLSearchParams
```
// 方法一:传入字符串
var params = new URLSearchParams('?foo=1&bar=2');
// 等同于
var params = new URLSearchParams(document.location.search);
// 方法二:传入数组
var params = new URLSearchParams([['foo', 1], ['bar', 2]]);
// 方法三:传入对象
var params = new URLSearchParams({'foo' : 1 , 'bar' : 2});
```
转为url 参数
当参数中有汉字时,会进行自动转义
```
var params = new URLSearchParams({'foo': '你好'});
params.toString() // "foo=%E4%BD%A0%E5%A5%BD"
```
### .toString()
### append()
改方法不会检查是否存在重复的键名
```
var params = new URLSearchParams({'foo': 1 , 'bar': 2});
params.append('foo', 3);
params.toString() // "foo=1&bar=2&foo=3"
```
### delete()
`params.delete('bar');
`
### has()
`params.has('bar') // true
`
### set() 存在则覆盖,否则添加
`params.set('foo', 2);
`
### get()/getAll()
存在返回值,不存在返回`null`
### sort() 按`Unicode`排序
### keys() / values() / entries() 返回遍历器对象
```
var params = new URLSearchParams('a=1&b=2');
for(var p of params.keys()) {
console.log(p);
}
// a
// b
for(var p of params.values()) {
console.log(p);
}
// 1
// 2
for(var p of params.entries()) {
console.log(p);
}
// ["a", "1"]
// ["b", "2"]
```
### 实例
#### 快速获取当前参数值
```
var url = new URL(window.location);
var foo = url.searchParams.get('foo') || 'somedefault';
```
#### 快速并接post 的body
```
const params = new URLSearchParams({foo: 1, bar: 2});
fetch('https://example.com/api', {
method: 'POST',
body: params
}).then(...)
```
';