题目描述
获取 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; }