URLSearchParams(鲜为人知处理URL地址的技能)
最近学习中无意发现url新处理方式,看到之后十分感兴趣就整理了一下。
URLSearchParams
URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串。参照
URLSearchParams() 构造器创建并返回一个新的URLSearchParams 对象。 开头的'?' 字符会被忽略。
方法
append(name,value)
@function 插入一个指定的键/值对作为新的搜索参数。
@param name 需要插入搜索参数的键名
@param value 需要插入参数的值
const url = new URL(`http://www.programmer.com?a=1&b=2`);
const searchParams = new URLSearchParams(url.search);
searchParams.append('c',3);
console.log(searchParams.toString())
运行结果
// a=1&b=2&c=3
delete(name)
@function 删除指定名称的所有搜索参数。
@param name 需要删除的键值名称
const url = new URL(`http://www.programmer.com?a=1&b=2`);
const searchParams = new URLSearchParams(url.search);
searchParams.delete('b');
console.log(searchParams.toString())
运行结果
// a=1
entries()
@function 返回一个iterator可以遍历所有键/值对的对象。
@return {iterator}
const url = new URL(`http://www.programmer.com?a=1&b=2`);
const searchParams = new URLSearchParams(url.search);
const paramArr = searchParams.entries();
for(const item of paramArr){
console.log(item)
}
运行结果
// ['a', '1']
// ['b', '2']
get(name)
@function 获取指定搜索参数的第一个值。
@param name 将要返回的参数的键名。
@return 返回一个 USVString ;如果没找到,返回 null.
const url = new URL(`http://www.programmer.com?a=1&b=2`);
const searchParams = new URLSearchParams(url.search);
console.log(searchParams.get('a'))
运行结果
// 1
getAll(name)
@function 获取指定搜索参数的所有值,返回是一个数组。
@param name 将要返回的参数的键名。
@return 一个USVString数组。
const url = new URL(`http://www.programmer.com?a=1&b=2`);
const searchParams = new URLSearchParams(url.search);
console.log(searchParams.getAll('a'))
运行结果
// [1]
has(name)
@function 判断是否存在此搜索参数。
@param name 查找的参数的键名。
@return { Boolean }
const url = new URL(`http://www.programmer.com?a=1&b=2`);
const searchParams = new URLSearchParams(url.search);
console.log(searchParams.has('a'))
运行结果
// true
keys()
@function 返回iterator 此对象包含了键/值对的所有键名。
@return 返回一个iterator.
const url = new URL(`http://www.programmer.com?a=1&b=2`);
const searchParams = new URLSearchParams(url.search);
const keys = searchParams.keys()
for(let key of keys){
console.log(key)
}
运行结果
// a
// b
set(name, value)
@function 用于设置和搜索参数相关联的值。如果设置前已经存在匹配的值,该方法会删除多余的,如果将要设置的值不存在,则创建它
@param name 将要设置的参数的健值名。
@param value 所要设置的参数值。
const url = new URL(`http://www.programmer.com?a=1&b=2`);
const searchParams = new URLSearchParams(url.search);
searchParams.set('a', 11);
console.log(searchParams.toString());
searchParams.set('w', 222);
console.log(searchParams.toString());
运行结果
// a=11&b=2
// a=11&b=2&w=222
sort(name, value)
@function 对包含在此对象中的所有键/值对进行排序,并返回undefined。排序顺序是根据键的Unicode代码点。该方法使用稳定的排序算法 (即,将保留具有相等键的键/值对之间的相对顺序)。
const url = new URL(`http://www.programmer.com?a=1&b=2`);
const searchParams = new URLSearchParams(url.search);
searchParams.sort();
console.log(searchParams.toString());
运行结果
// a=1&b=2
toString()
@function 返回适用在URL中的查询字符串。
@return { String }
const url = new URL(`http://www.programmer.com?a=1&b=2`);
const searchParams = new URLSearchParams(url.search);
console.log(searchParams.toString());
运行结果
// a=1&b=2
values()
@function 返回一个iterator,该遍历器允许遍历对象中包含的所有值。这些值都是USVString对象。
@return iterator
const url = new URL(`http://www.programmer.com?a=1&b=2`);
const searchParams = new URLSearchParams(url.search);
const values = searchParams.values()
for(var value of values) {
console.log(value);
}
运行结果
// 1
// 2
实战
我们获取url上的参数之前会这么写
function getParams(url) {
const res = {}
if (url.includes('?')) {
const str = url.split('?')[1]
const arr = str.split('&')
arr.forEach(item => {
const key = item.split('=')[0]
const val = item.split('=')[1]
res[key] = decodeURIComponent(val) // 解码
})
}
return res
}
const user = getParams('http://www.programmer.com?a=1&b=2')
console.log(user)
// { a: 1, b: 1 }
如今学会了,只需两行代码搞定 加班那不可能
const url = new URL(`http://www.programmer.com?a=1&b=2`);
const searchParams = new URLSearchParams(url.search);
const params = Object.fromEntries(searchParams.entries());
console.log(params)
// { a: 1, b: 1 }
URLSearchParams(鲜为人知处理URL地址的技能)的更多相关文章
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
如果要使用中间的方法的话,可以访问我的帮助类完全免费开源:C# HttpHelper,帮助类,真正的Httprequest请求时无视编码,无视证书,无视Cookie,网页抓取 1.第一招,根据URL地 ...
- 获取Url地址中参数的3种方法【华为云技术分享】
获取Url的代码如下:window.location.href; 方法一:原生js(假设已经获得了Url地址) var url = 'https://gitbook.cn/gitchat/geekbo ...
- yii2获取登录前的页面url地址--电脑和微信浏览器上的实现以及yii2相关源码的学习
对于一个有登录限制(权限限制)的网站,用户输入身份验证信息以后,验证成功后跳转到登录前的页面是一项很人性化的功能.那么获取登录前的页面地址就很关键,今天在做一个yii2项目的登录调试时发现了一些很有意 ...
- url地址的图片路径
url地址的图片路径: (./images/1.jpg) 中的./指根路径,有或没有都可以: (../images/1.jpg) 中的../指相对路径: (../../images/1.jpg) 中的 ...
- i春秋url地址编码问题
i春秋学院是国内比较知名的安全培训平台,前段时间看了下网站,顺便手工简单测试常见的XSS,发现网站搜索功能比较有意思. 其实是对用户输入的内容HTML编码和URL编码的处理方式在这里不合理,提交到乌云 ...
- ASP.NET MVC中获取URL地址参数的两种写法
一.url地址传参的第一种写法 1.通过mvc中默认的url地址书写格式:控制器/方法名/参数 2.实例:http://localhost:39270/RequestDemo/Index/88,默认参 ...
- URL地址中使用中文作为的参数【转】
原文:http://blog.csdn.net/blueheart20/article/details/43766713 引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作 ...
- 去除magento多店铺URL地址中的“___from_store=”
magento 的多店铺功能,大多数情况下是根据语言来进行选择的,当添加了多店铺之后,一般情况下我们会选择开启添加store code到url地址中. Magento 自带的这种功能算是比较不错了,但 ...
- 获取去除参数url地址
获取url地址除去?后的链接地址 var url = "12345.htm?x=666&y=777"; if(url.indexOf("?") != - ...
- 根据url地址单个或批量下载图片
我们在java开发的时候会遇到通过url地址下载图片的情况.方便起见,我把通过url地址下载图片封装了tool工具类,方便以后使用 1.根据如:http://abc.com/hotels/a.jpg ...
随机推荐
- Ubuntu 22.04 安装搜狗输入法
下载搜狗输入法 下载地址https://shurufa.sogou.com/linux 也可以命令下载 wget https://ime.sogouimecdn.com/202212182151/3b ...
- Ubuntu20.04/22.04 安装 Arduino IDE 2.x
这周收到两片基于LGT8F328P LQFP32的Arduino Mini EVB, 机器上没有 Arduino 环境需要新安装, 正好感受一下新出的 Arduino IDE 2.x, 记录一下 Ub ...
- 深入Typescript--03-Typescript中的类(努力加餐饭)
Typescript中的类 一.TS中定义类 class Pointer{ x!:number; // 实例上的属性必须先声明 y!:number; constructor(x:number,y?:n ...
- CSS-@规则(At-rules)常用语法使用总结
At-rules规则是目前CSS中一种常见的语法规则,它使用一个"@"符号加一个关键词定义,后面跟上语法区块,如果没有则以分号结束即可. 这种规则一般用于标识文档.引入外部样式.条 ...
- 【分析笔记】Linux 内核自旋锁的理解和使用原则
自旋锁简单说明: 自旋锁主要解决在竞态并发下,保护执行时间很短的临界区.它只允许一个执行单位进入临界区,在该执行单位离开前,其它的执行单位将会在进入临界区前不停的循环等待(即所谓的自旋),直至该执行单 ...
- Nginx03 虚拟主机
1 虚拟主机 虚拟主机使用特殊的软硬件技术,把一台运行在因特网上的服务器主机分成一台台"虚拟"的主机,每一台虚拟主机都具有独立的域名,具有完整的Internet服务器(WWW.FT ...
- 固定SRAM地址变量
IAR: __no_init uint8_t _downflag @0x2001FF00;
- 合肥光源纵向震荡数据源相关PV的增补
合肥光源纵向震荡数据源相关PV 昨天发了上面那篇,对于那张二维纵向时间的图又做了些分析,因为要显示分析的结果,又增加了几个PV,说明如下: HLSII:BD:BCMSDS:Time:Spectrum ...
- 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(7)-Charles苹果手机手机抓包知否知否?
1.简介 Charles和Fiddler一样不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求. Charles也能截获iOS设备发出的请求,比如 i ...
- JZOJ 7685. 【2022.10.06冲剌NOIP2022模拟】奇怪的函数(function)
\(\text{Solution}\) 观察到关于 \(x\) 的函数在 \(n\) 个操作之后一定是这样的: 一段水平直线加上一段斜率为 \(1\) 的直线再加上一段水平直线 于是线段树维护这个分段 ...