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