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.无参数sKey

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

 

知识点:

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

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

例子:

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

 

 3.void 0 与undefined:

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

例子:

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

运行结果:

 

 

posted @ 2021-05-20 17:07  Origin-666  阅读(263)  评论(0)    收藏  举报