URLSearchParams快速解析URL查詢參數(shù)

瀏覽器 Window 內(nèi)置的 URLSearchParams 接口定義了一些實用的方法來處理 URL 的查詢字符串,再也不用 & 字符串分割的方式去解析 url query 參數(shù)了垛贤。

JS && URLSearchParams

一、URLSearchParams 構(gòu)造函數(shù)

URLSearchParams() 構(gòu)造器創(chuàng)建并返回一個新的 URLSearchParams 對象此疹。開頭的 ? 字符會被忽略。

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:插入一個指定的鍵/值對作為新的搜索參數(shù)。
  • delete:從搜索參數(shù)列表里刪除指定的搜索參數(shù)及其對應的值旗扑。
  • set:設置一個搜索參數(shù)的新值蹦骑,假如原來有多個值將刪除其他所有的值。
  • keys:返回iterator 此對象包含了鍵/值對的所有鍵名臀防。
  • values:返回iterator 此對象包含了鍵/值對的所有值眠菇。
  • entries:返回一個iterator可以遍歷所有鍵/值對的對象。
  • forEach:插入一個指定的鍵袱衷。
  • get:獲取指定搜索參數(shù)的第一個值捎废。
  • getAll:獲取指定搜索參數(shù)的所有值,返回是一個數(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 對象
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 判斷是否包含某個查詢參數(shù)
console.log(p1.has('id')) // true
console.log(p1.has('name')) // false

// get 獲取某個參數(shù)值
console.log(p1.get('id')) // 12
console.log(p1.get('age')) // null

// append 添加鍵值對
p1.append('name', 'Tiven')
console.log(p1.toString()) // id=12&dt=2022-10-10&sort=desc&name=Tiven

// delete 刪除鍵值對
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ù)不會解析完整 URL,但是如果字符串起始位置有 ? 的話會被去除智政。

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

歡迎訪問:天問博客

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末艳悔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子女仰,更是在濱河造成了極大的恐慌,老刑警劉巖抡锈,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疾忍,死亡現(xiàn)場離奇詭異,居然都是意外死亡床三,警方通過查閱死者的電腦和手機一罩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撇簿,“玉大人聂渊,你說我怎么就攤上這事∷奶保” “怎么了汉嗽?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長找蜜。 經(jīng)常有香客問我饼暑,道長,這世上最難降的妖魔是什么洗做? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任弓叛,我火速辦了婚禮,結(jié)果婚禮上诚纸,老公的妹妹穿的比我還像新娘撰筷。我一直安慰自己,他們只是感情好畦徘,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布毕籽。 她就那樣靜靜地躺著,像睡著了一般旧烧。 火紅的嫁衣襯著肌膚如雪影钉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天掘剪,我揣著相機與錄音平委,去河邊找鬼。 笑死夺谁,一個胖子當著我的面吹牛廉赔,可吹牛的內(nèi)容都是我干的肉微。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼蜡塌,長吁一口氣:“原來是場噩夢啊……” “哼碉纳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起馏艾,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤劳曹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后琅摩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铁孵,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年房资,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜕劝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡轰异,死狀恐怖岖沛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搭独,我是刑警寧澤婴削,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站戳稽,受9級特大地震影響馆蠕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惊奇,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一互躬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颂郎,春花似錦吼渡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至替劈,卻和暖如春寄雀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陨献。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工盒犹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓急膀,卻偏偏與公主長得像沮协,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子卓嫂,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容