获取或删除url的某个参数
例如:
正常的url:https://www.cnblogs.com/morango;
如果加了某些特定的参数,就变成了这样:https://www.cnblogs.com/morango?a=1;
或者带多个参数:https://www.cnblogs.com/morango?a=1&b=2;
又或者根据项目需求集成了 应用的情况:https://www.cnblogs.com/morango?service=a%3D1(a%3D1指的是编码后的service)
但上述各种情况都有一个规律:后面拼接的都是key=value的形式。
下面是不同情况取值的方法函数:
1、根据url中的参数名称获取 对应的值
// 根据QueryString参数名称获取值 getQueryStringByName(name) { let result = window.location.search.match( new RegExp("[?&]" + name + "=([^&]+)", "i") ); if (result == null || result.length < 1) { return ""; } return result[1]; }, //假设当前url:https://www.cnblogs.com/morango?a=1&b=2 //方法调用 let test = this.getQueryStringByName('a') console.log(test) //输出 1
2、变形---->
当路径中包含两个同名参数时,例如:
https://www.cnblogs.com/morango?service=1&service2=2
此时带了两个service的情况下,用第一种的方法会出现 第二个service参数值丢失的情况。因此,这里在上述基础上做了一些修改:
// 根据QueryUrl参数名称获取含多个同名name的值 getQueryUrl(name) { let result = window.location.search.match( new RegExp("[?&]" + name + "=([^&]+)", "i") ); if (result == null || result.length < 1) { return ""; } const input = result.input; let startIdx = name.length + 1; const url = input ? input.substring(input.indexOf(name) + startIdx, input.length) : ""; return url; }, //假设当前url:https://www.cnblogs.com/morango?service=1&service2=2 //方法调用 let test = this.getQueryUrl('service') console.log(test) //输出 1&service2=2
3、删除url路径中的某个参数值
//删除url中key为name的对应键值对参数,并返回剩下的url delUrlByName(name) { var loca = window.location; var baseUrl = loca.origin + loca.pathname; var query = loca.search.split('?')[1]; if(!query) { return loca; } if(loca.href.indexOf(name) > -1) { var obj = {}; var arr = query.indexOf('&') > -1? query.split('&') : [query]; //根据&分割,这里的service是unicode编码过得,不存在内部出现&的情况(会被转义成%) for(var i= 0; i < arr.length; i++) { arr[i] = arr[i].split("=") obj[arr[i][0]] = arr[i][1] }; delete obj[name]; let str = JSON.stringify(obj) === '{}'? "" : "?"; var url = baseUrl + str + JSON.stringify(obj).replace(/[\"\{\}]/g, "").replace(/\:/g, "=").replace(/\,/g, "&"); return url; } }, //假设当前url:https://www.cnblogs.com/morango?value=123&value2=456 //方法调用 let test = this.delUrlByName('value') console.log(test) //输出https://www.cnblogs.com/morango?value2=456

浙公网安备 33010602011771号