如果不知道数组里面有哪些数据可以先打印出来看
function getUrlParam(sUrl, sKey) {
// split() 方法用于把一个字符串分割成字符串数组。
//取出每个参数的键值对放入arr数组
var arr = sUrl.split('?')[1].split('#')[0].split('&');
// console.log(arr);
// arr现在的数据为: [ 'key=1', 'key=2', 'key=3', 'test=4' ]
const obj={};
arr.forEach(element => {
// 取出数组中每一项的键与值
const [key,value] = element.split('=');
if(obj[key]===void 0){
// 表示第一次遍历这个元素,直接添加到对象上面
obj[key]=value;
}else{
// 表示不是第一次遍历说明这个键已有,通过数组存起来。
obj[key]=[].concat(obj[key],value);
}
});
console.log(obj);
// 如果该方法为一个参数,则返回对象。如果为两个参数,sKey存在,则返回值或数组,否则返回空字符。
// console.log(sKey === void 0 ? obj : obj[sKey] || '');
return sKey === void 0 ? obj : obj[sKey] || '';
// 最后obj的值为:{ key: [ '1', '2', '3' ], test: '4' }
}
//调用这个函数,实参参数就是题目给的,sUrl,sKey是形参
getUrlParam('http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe','key');