URLSearchParams快速解析URL查詢參數(shù)實(shí)現(xiàn)
一、URLSearchParams 構(gòu)造函數(shù)
瀏覽器 Window 內(nèi)置的 URLSearchParams 接口定義了一些實(shí)用的方法來(lái)處理 URL 的查詢字符串,再也不用 & 字符串分割的方式去解析 url query 參數(shù)了。

JS && URLSearchParams
URLSearchParams() 構(gòu)造器創(chuàng)建并返回一個(gè)新的 URLSearchParams 對(duì)象。開(kāi)頭的 ? 字符會(huì)被忽略。
let oUSP = URLSearchParams()
console.log(oUSP)
/*
URLSearchParams {}
[[Prototype]]: URLSearchParams
append: ? append()
delete: ? delete()
entries: ? entries()
forEach: ? forEach()
get: ? ()
getAll: ? getAll()
has: ? has()
keys: ? keys()
set: ? ()
sort: ? sort()
toString: ? toString()
values: ? values()
constructor: ? URLSearchParams()
Symbol(Symbol.iterator): ? entries()
Symbol(Symbol.toStringTag): "URLSearchParams"
[[Prototype]]: Object
* */
二、URLSearchParams 方法
該接口不繼承任何屬性。
- append:插入一個(gè)指定的鍵/值對(duì)作為新的搜索參數(shù)。
- delete:從搜索參數(shù)列表里刪除指定的搜索參數(shù)及其對(duì)應(yīng)的值。
- set:設(shè)置一個(gè)搜索參數(shù)的新值,假如原來(lái)有多個(gè)值將刪除其他所有的值。
- keys:返回iterator 此對(duì)象包含了鍵/值對(duì)的所有鍵名。
- values:返回iterator 此對(duì)象包含了鍵/值對(duì)的所有值。
- entries:返回一個(gè)iterator可以遍歷所有鍵/值對(duì)的對(duì)象。
- forEach:插入一個(gè)指定的鍵。
- get:獲取指定搜索參數(shù)的第一個(gè)值。
- getAll:獲取指定搜索參數(shù)的所有值,返回是一個(gè)數(shù)組。
- has:返回 Boolean 判斷是否存在此搜索參數(shù)。
- sort:按鍵名排序。
- toString:返回搜索參數(shù)組成的字符串,可直接使用在 URL 上。
三、使用示例
let { search } = new URL('https://tiven.cn?id=12&dt=2022-10-10&sort=desc')
console.log(search) // ?id=12&dt=2022-10-10&sort=desc
// 創(chuàng)建 URLSearchParams 對(duì)象
let p1 = new URLSearchParams(search);
let p2 = new URLSearchParams([["id", 12], ["dt", '2022-10-10'], ["sort", 'desc']]);
let p3 = new URLSearchParams({"id": 12 , "dt": '2022-10-10', "sort": 'desc'});
console.log(p1.toString()) // id=12&dt=2022-10-10&sort=desc
console.log(p2.toString()) // id=12&dt=2022-10-10&sort=desc
console.log(p3.toString()) // id=12&dt=2022-10-10&sort=desc
// entries
for (let [k, v] of p1.entries()) {
console.log(k, v)
}
// forEach
p1.forEach((v,k)=>{
console.log(k, v)
})
// has 判斷是否包含某個(gè)查詢參數(shù)
console.log(p1.has('id')) // true
console.log(p1.has('name')) // false
// get 獲取某個(gè)參數(shù)值
console.log(p1.get('id')) // 12
console.log(p1.get('age')) // null
// append 添加鍵值對(duì)
p1.append('name', 'Tiven')
console.log(p1.toString()) // id=12&dt=2022-10-10&sort=desc&name=Tiven
// delete 刪除鍵值對(duì)
p1.delete('name')
console.log(p1.toString()) // id=12&dt=2022-10-10&sort=desc
// sort 排序
p1.sort()
console.log(p1.toString()) // dt=2022-10-10&id=12&sort=desc注意: URLSearchParams 構(gòu)造函數(shù)不會(huì)解析完整 URL,但是如果字符串起始位置有 ? 的話會(huì)被去除。
let p = new URLSearchParams('https:tiven.cn?id=12&name=Tiven')
console.log(p.has('id')) // false
console.log(p.get('id')) // null
console.log(p.toString()) // https%3Ativen.cn%3Fid=12&name=Tiven以上就是URLSearchParams快速解析URL查詢參數(shù)實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于URLSearchParams解析URL的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
TypeScript工具類 Partial 和 Required 的場(chǎng)景分析
這篇文章主要介紹了TypeScript工具類 Partial 和 Required 的詳細(xì)講解,本文通過(guò)場(chǎng)景描述給大家詳細(xì)講解工具類的使用,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
Javascript格式化并高亮xml字符串的方法及注意事項(xiàng)
這篇文章主要介紹了Javascript格式化并高亮xml字符串的方法及注意事項(xiàng),需要的朋友可以參考下2018-08-08
js keycode快捷鍵大全 并附有簡(jiǎn)單使用說(shuō)明
js keycode快捷鍵大全 并附有簡(jiǎn)單使用說(shuō)明,方便大家使用。2010-10-10
vue2.x的深入學(xué)習(xí)--關(guān)于h函數(shù)的說(shuō)明
下面小編就為大家分享一篇基于h函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-08-08
基于微前端qiankun的多頁(yè)簽緩存方案實(shí)踐
這篇文章主要介紹了基于微前端qiankun的多頁(yè)簽緩存方案實(shí)踐,本文對(duì)qiankun框架的使用沒(méi)有做太多的發(fā)散總結(jié),官網(wǎng)和Github上已經(jīng)有很多相關(guān)問(wèn)題的總結(jié)和踩坑經(jīng)驗(yàn)可供參考,需要的朋友可以參考下2022-08-08
JS判斷form內(nèi)所有表單是否為空的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇JS判斷form內(nèi)所有表單是否為空的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09
PHP實(shí)現(xiàn)本地圖片上傳和驗(yàn)證功能
這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)本地圖片上傳和驗(yàn)證功能的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Safari5中alert的無(wú)限循環(huán)BUG
猜測(cè)Safari5中將點(diǎn)擊alert框的確定按鈕也當(dāng)成點(diǎn)擊body了。事件一直冒泡到彈出框上。2011-04-04

