头图
js parses the url, and parses the parameters in the following url into key-value objects
https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=196420384&lang=zh_CN

Method 1, split() + loop take out in turn

 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
}

Method 2, regular + arguments

 parseURLParams(url) {
    let queryParams = {}
    // 正则匹配规则
    let reg = /([^?=&]+)=([^?=&]+)/g
    // 利用replace替换
    url.replace(reg, function() {
        // 用伪数组进行键值对拼接
        queryParams[arguments[1]] = arguments[2]
    })
    // 返回参数键值对
    return queryParams
}

Method 3, regex + ...arg

 parseURLParams(url) {
    let queryParams = {}
    // 正则匹配规则
    let reg = /([^?=&]+)=([^?=&]+)/g
    // 利用replace替换
    url.replace(reg, function() {
        // 用伪数组进行键值对拼接
        queryParams[arguments[1]] = arguments[2]
    })
    // 返回参数键值对
    return queryParams

前端小菜
266 声望8 粉丝

努力可以改变能力