2.获取 url 中的参数

题目描述:

获取 url 中的参数
1. 指定参数名称,返回该参数的值 或者 空字符串
2. 不指定参数名称,返回全部的参数对象 或者 {}

3. 如果存在多个同名参数,则返回数组
4. 不支持URLSearchParams方法
示例:
输入:两个参数
http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe key
输出:
[1, 2, 3]
function getUrlParam(sUrl, sKey) {
var paramArr = sUrl.split(?)[1].split(#)[0].split(&); // 取出每个参数的键值对放入数组
const obj = {};
paramArr.forEach(element => {
const [key, value] = element.split(=);  // 取出数组中每一项的键与值
if(obj[key] === void 0){   // 表示第一次遍历这个元素,直接添加到对象上面,此处 void 0 与undefined作用相同
obj[key]=value
} else{
obj[key]=[].concat(obj[key],value); // 表示不是第一次遍历说明这个键已有,通过数组存起来。
}});
return sKey===void 0? obj:obj[sKey]||‘‘   // 如果该方法为一个参数,则返回对象。
//如果为两个参数,sKey存在,则返回值或数组,否则返回空字符。
}

测试结果:

1.有参数sKey

  console.log(getUrlParam(http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe,key))

2.获取 url 中的参数

 

 2.无参数sKey

 console.log(getUrlParam(http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe))

2.获取 url 中的参数

 

知识点:

1.split()会分割字符串并且返回一个数组(不改变原字符串);

2.concat()会连接两个及两个以上数组;

例子:

var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var kai = ["Robin"];
var children = hege.concat(stale,kai);

2.获取 url 中的参数

 

 3.void 0 与undefined:

一般情况下,void 后面加的任何式子都是undefined,之所以使用void 0 ,我觉得是因为void 0 比较短;

例子:

 console.log(void 0)
 console.log(void 66)
 console.log(void hello world!)

运行结果:

2.获取 url 中的参数

 

 

2.获取 url 中的参数

上一篇:.NetCore 缓存的使用(Caching.Memory)


下一篇:Sortablejs简明教程·vue下多列拖拽