ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
[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(...) ```