1. 程式人生 > 其它 >URLSearchParams(鮮為人知處理URL地址的技能)

URLSearchParams(鮮為人知處理URL地址的技能)

最近學習中無意發現url新處理方式,看到之後十分感興趣就整理了一下。

URLSearchParams定義

URLSearchParams 介面定義了一些實用的方法來處理 URL 的查詢字串。參照

方法

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