题目描述
获取 url 中的参数
- 指定参数名称,返回该参数的值 或者 空字符串
- 不指定参数名称,返回全部的参数对象 或者 {}
- 如果存在多个同名参数,则返回数组
分两种大致情况:给了参数名和不给参数名
给参数名要细分三种情况:
1、只有一个同名参数,返回参数的值;
2、参数没值,返回空;
3、存在多个同名参数,则返回值数组
不给参数名还要分两种情况:
1、有参数对象返回全部的参数对象;
2、否则返回空
function getUrlParam(sUrl, sKey) {
let argList = sUrl.split('?')[1].split('#')[0].split('&');
let argNameList = new Array();
let argSameKey = new Array();
let arrObj = new Object();
for(let i = 0;i<argList.length;i++){
argNameList[i] = argList[i].split('=')[0];
if(argList[i].split('=')[0] === sKey) argSameKey.push(argList[i].split('=')[1]);
}
if(!sKey){
if(argNameList.length > 0){
//返回对象
for(var i = 0, len = argList.length; i < len; i++){
var tmp = argList[i].split('=');
if (!(tmp[0] in arrObj)) {
arrObj[tmp[0]] = [];
}
arrObj[tmp[0]].push(tmp[1]);
}
return arrObj;
}else return {
};
}else{
if(argSameKey.length == 1) return argSameKey[0]; //只有一个参数,返回参数值
if(argSameKey.length == 0) return {
}; //没有有参没值
if(argSameKey.length>1) return argSameKey; //如果存在多个同名参数,则返回值数组
}
}