1. function parseParam(url) {
    2. let paramsArr = /.+\?(.+)$/?.exec(url);
    3. let paramsStr = ''
    4. if (paramsArr) {
    5. paramsStr = paramsArr[1]
    6. } else {
    7. return null
    8. }
    9. const paramsArrByRes = paramsStr?.split('&')
    10. let resObj = {};
    11. paramsArrByRes.length && paramsArrByRes?.forEach(param => {
    12. if (/=/.test(param)) {
    13. let [key, val] = param.split('=');
    14. val = decodeURIComponent(val); // 解码
    15. val = /^\d+$/.test(val) ? parseFloat(val) : val; // 判断是否转为数字
    16. if (resObj.hasOwnProperty(key)) { // 如果对象有 key,则添加一个值
    17. resObj[key] = [].concat(resObj[key], val);
    18. } else { // 如果对象没有这个 key,创建 key 并设置值
    19. resObj[key] = val;
    20. }
    21. } else { // 处理没有 value 的参数
    22. resObj[param] = true;
    23. }
    24. })
    25. return resObj
    26. }
    27. console.log(parseParam('https://www.google.com.hk/search?a=1&b=2'))