js解析url的三種方法

jrue發表於2022-04-28
js解析url,將如下url中的引數解析為key-value物件
https://mp.weixin.qq.com/adva...

方法1,split() + 迴圈依次取出

parseURLParams(url) {
    let queryParams = {}
    // 判斷是否有引數
    if (url.indexOf('?') < 0) return queryParams
    // 分離域名和引數
    let domainAndParams = url.split('?')
    // 引數切分
    let queryStr = domainAndParams[1]
    let queryItems = queryStr.split('&')
    // 迴圈引數,把引數轉為鍵值對
    queryItems.forEach(item => {
        let paramKV = item.split('=')
        queryParams[paramKV[0]] = paramKV[1]
    })
    // 返回引數鍵值對
    return queryParams
}

方法2,正則 + arguments

parseURLParams(url) {
    let queryParams = {}
    // 正則匹配規則
    let reg = /([^?=&]+)=([^?=&]+)/g
    // 利用replace替換
    url.replace(reg, function() {
        // 用偽陣列進行鍵值對拼接
        queryParams[arguments[1]] = arguments[2]
    })
    // 返回引數鍵值對
    return queryParams
}

方法3,正則 + ...arg

parseURLParams(url) {
    let queryParams = {}
    // 正則匹配規則
    let reg = /([^?=&]+)=([^?=&]+)/g
    // 利用replace替換
    url.replace(reg, function() {
        // 用偽陣列進行鍵值對拼接
        queryParams[arguments[1]] = arguments[2]
    })
    // 返回引數鍵值對
    return queryParams

相關文章