题解 | #获取 url 参数#

获取 url 参数

http://www.nowcoder.com/practice/a3ded747e3884a3c86d09d88d1652e10

如果不知道数组里面有哪些数据可以先打印出来看

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');
全部评论

相关推荐

03-06 18:20
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务