****描述
**获取 url 中的参数
- 指定参数名称,返回该参数的值 或者 空字符串
- 不指定参数名称,返回全部的参数对象 或者 {}
- 如果存在多个同名参数,则返回数组
- 不支持URLSearchParams方法
示例1**
输入:
http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe key
复制
输出:
[1, 2, 3]****
先上自己写的代码。。奇丑无比
function getUrlParam(sUrl, sKey) {
let str = sUrl;
let keys = sKey;
const rule = new RegExp('(' + keys + ")")
if (!rule.test(str) && keys) return '';
let params = sUrl.split("?");
params = params[1].split('&');
let obj = {};
let a = ''
params.forEach(item => {
let key = item.split("=")[0]
let value = item.split("=")[1]
if (item.split("=")[1].includes('#')) {
let bb = item.split("=")[1].split("#")[0]
obj[key] = bb
} else {
if (obj.hasOwnProperty(key)) {
if (Array.isArray(obj[key])) {
obj[key].push(value)
}
} else obj[key] = [value]
}
})
if(keys) return obj[keys]
else return obj||{}
}
别人写的代码-----用了正则表达式,为啥我写的时候就没想到。
function getUrlParam(sUrl,sKey){
var result = {};
sUrl.replace(/\??(\w+)=(\w+)&?/g,function(a,k,v){
if(result[k] !== void 0){
var t = result[k];
result[k] = [].concat(t,v);
}else{
result[k] = v;
}
});
if(sKey === void 0){
return result;
}else{
return result[sKey] || '';
}
}