形式一:

语法糖

// 如果不传则获取路由参数。返回对象。如果反复给参数,则和 vue-router 一样,都是以数组返回getAllUrlParams([url])
应用
// 情景一: 获取某个url上的参数let href = 'https://www.baidu.com/s?wd=哈哈哈&rsv_spt=1'getAllUrlParams(href )/*** 打印后果:*  { wd: "哈哈哈", rsv_spt: "1" }*/// 情景二:获取浏览器地址栏参数getAllUrlParams() // 外面默认查问 location.href 

代码

// 获取url参数function getAllUrlParams(urls) {    var url = urls || location.href    // 用JS拿到URL,如果函数接管了URL,那就用函数的参数。如果没传参,就应用以后页面的URL    var queryString = url ? url.split('?')[1] : window.location.search.slice(1);    // 用来存储咱们所有的参数    var obj = {};    // 如果没有传参,返回一个空对象    if (!queryString) {        return obj;    }    // stuff after # is not part of query string, so get rid of it    queryString = queryString.split('#')[0];    // 将参数分成数组    var arr = queryString.split('&');    for (var i = 0; i < arr.length; i++) {        // 拆散成key:value的模式        var a = arr[i].split('=');        // 将undefined标记为true        var paramName = a[0];        var paramValue = typeof (a[1]) === 'undefined' ? true : a[1];        if (paramName.match(/\[(\d+)?\]$/)) {            // 如果paramName不存在,则创立key            var key = paramName.replace(/\[(\d+)?\]/, '');            if (!obj[key]) obj[key] = [];            // 如果是索引数组 e.g. colors[2]            if (paramName.match(/\[\d+\]$/)) {                // 获取索引值并在对应的地位增加值                var index = /\[(\d+)\]/.exec(paramName)[1];                obj[key][index] = paramValue;            } else {                // 如果是其它的类型,也放到数组中                obj[key].push(paramValue);            }        } else {            // 解决字符串类型            if (!obj[paramName]) {                // 如果如果paramName不存在,则创建对象的属性                obj[paramName] = paramValue;            } else if (obj[paramName] && typeof obj[paramName] === 'string') {                // 如果属性存在,并且是个字符串,那么就转换为数组                obj[paramName] = [obj[paramName]];                obj[paramName].push(paramValue);            } else {                // 如果是其它的类型,还是往数组里丢                obj[paramName].push(paramValue);            }        }    }    return obj;}

办法二

应用形式
let href = 'https://www.baidu.com/s?wd=哈哈哈&rsv_spt=1'getQuerys(href);/*** 打印后果:*  { wd: "哈哈哈", rsv_spt: "1" }*/// 获取浏览器网页上参数 getQuerys(location.href)
 function getQuerys(e) {    if (!e) return "";    var t = {},    r = [],    n = "",    a = "";    try {        var i = [];        if (e.indexOf("?") >= 0 && (i = e.substring(e.indexOf("?") + 1, e.length).split("&")), i.length > 0) for (var o in i) n = (r = i[o].split("="))[0],        a = r[1],        t[n] = a    } catch(s) {        t = {}    }    return t}

办法三:

此办法只能对浏览器参数中获取单个参数,灵活性差,不举荐
export const getQueryString = (name) => {    const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');    const search = window.location.search.split('?')[1] || '';    const r = search.match(reg) || [];    return r[2];}
上面是是否形式:
// 比方以后浏览器网址上:https://www.baidu.com/s?wd=哈哈哈&rsv_spt=1getQueryString('wd') // 打印: "哈哈哈"

博客地址