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'))