function parseParam(url) {
let paramsArr = /.+\?(.+)$/?.exec(url);
let paramsStr = ''
if (paramsArr) {
paramsStr = paramsArr[1]
} else {
return null
}
const paramsArrByRes = paramsStr?.split('&')
let resObj = {};
paramsArrByRes.length && paramsArrByRes?.forEach(param => {
if (/=/.test(param)) {
let [key, val] = param.split('=');
val = decodeURIComponent(val); // 解码
val = /^\d+$/.test(val) ? parseFloat(val) : val; // 判断是否转为数字
if (resObj.hasOwnProperty(key)) { // 如果对象有 key,则添加一个值
resObj[key] = [].concat(resObj[key], val);
} else { // 如果对象没有这个 key,创建 key 并设置值
resObj[key] = val;
}
} else { // 处理没有 value 的参数
resObj[param] = true;
}
})
return resObj
}
console.log(parseParam('https://www.google.com.hk/search?a=1&b=2'))