SOURCE

let url = 'http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled';
/* 结果
{ user: 'anonymous',
  id: [ 123, 456 ], // 重复出现的 key 要组装成数组,能被转成数字的就转成数字类型
  city: '北京', // 中文需解码
  enabled: true, // 未指定值得 key 约定为 true
}
*/
// 用到的语法
// /=/.test 正则 返回值是Boolean类型
// {a:1}.hasOwnPorperty(key) 判断对象是否有这个属性 返回一个Boolean值
// url 解码方法 decodeURLComponent()

function parseParam(url){
    let parseArr = url.split('?')[1].split('&')
    let parseObj = {}
    parseArr.forEach(item => {
        if(/=/.test(item)){
            let [k,v] = item.split('=')
            // v = decodeURIComponent(v)
            v = decodeURI(v)
            v = /\d/.test(v)? parseFloat(v) : v
            if(parseObj.hasOwnProperty(k)){
                v= [].concat(parseObj[k],v)
            }
            parseObj[k] = v
        }else{
            parseObj[item] = true
        }
    })
    return parseObj
}
console.log(parseParam(url))
console 命令行工具 X clear

                    
>
console