多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 方式一: ### 文档说明 ```bash # 如果不传则获取路由参数。返回对象。如果重复给参数,则和 vue-router 一样,都是以数组返回 getAllUrlParams([url]) ``` ### 代码 ~~~ // 获取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; } ~~~ ## 方法二: ``` 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]; } ```