题目描述
获取 url 中的参数
1.指定参数名称,返回该参数的值 或者 空字符串
2.不指定参数名称,返回全部的参数对象 或者 {}
3.如果存在多个同名参数,则返回数组
示例1
输入
http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe key
输出
[1, 2, 3]
代码
function getUrlParam(sUrl, sKey) {
//字符分割获取键值对字符串
var Url = sUrl.split('#')[0].split('?')[1].split('&');
// console.log(Url);
// 0: "key=1"
// 1: "key=2"
// 2: "key=3"
// 3: "test=4"
var res = {
};
//分离键值对
for(var i = 0;i<Url.length;i++){
var kv = Url[i].split('=');
//已经含有该属性,直接push
if(res.hasOwnProperty(kv[0])){
res[kv[0]].push(kv[1]);
}
//不含该属性,创建空数组存放
else{
res[kv[0]] = [];
res[kv[0]].push(kv[1]);
}
}
// console.log(res);
// key: (3) ["1", "2", "3"]
// test: ["4"]
//指定sKey
if(sKey!=null){
//含有sKey该属性
if(res.hasOwnProperty(sKey)){
//只有一个同名参数
if(res[sKey].length == 1){
return res[sKey][0];
}
//该参数的值为空
if(res[sKey].length == 0){
return "";
}
//多个同名参数,返回数组
return res[sKey];
}
//不含sKey属性
return "";
}
//不指定sKey,返回全部参数对象
return res;
}