题解 | #获取 url 参数#

获取 url 参数

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

最详细的解题,借鉴了题解区中的大神(忘记名字了),将每一步都仔细做了备注。
function geturl(sUrl, sKey) {
    let arr = sUrl.split("?")[1].split("#")[0]; //key=1&key=2&key=3&key=4&test=4
    if (sKey) { //有参数
        let strs = arr.split("&"); //'key=1', 'key=2', 'key=3', 'key=4', 'test=4'
        let arrs = new Array(); //创建一个新数组
        strs.forEach(item => {
            let tmp = item.split("="); //[ 'key', '1' ][ 'key', '2' ][ 'key', '3' ][ 'key', '4' ][ 'test', '4' ]
            if (tmp[0] === sKey) { //如果当前键的值===输入的键
                arrs.push(tmp[1]); //则将该键的值 放入数组中
            }
        })
        if (arrs.length == 1) { //如果只有输入的键查找结果只有一个
            return arrs[0]; //只返回当前键的值
        } else if (arrs.length == 0) { //如果找不到改键
            return ""; //返回空字符串
        } else {
            return arrs; //除开以上的结果,返回所有的键
        }
    } else { //没有指定参数,返回全部参数对象 或者{}
        if (arr == undefined || arr == "") {
            return {};
        } else {
            let strs = arr.split("&");
            let obj = new Object(); //创建一个新对象
            strs.forEach(item => {
                let tmp = item.split("=");
                if (!(tmp[0] in obj)) { //如果对象中没有该索引,就往对象中添加改索引
                    obj[tmp[0]] = []; //将新添加的属性tmp[0]的属性值设置为[] (为了下面使用push做铺垫)
                }
                obj[tmp[0]].push(tmp[1]); //依次将值放入对应的键名  (注意:只有数组才能用push函数)
            })
            return obj;
        }
    }
}
全部评论

相关推荐

机械打工仔:第一位颇有孟德之志
点赞 评论 收藏
分享
点赞 评论 收藏
分享
迷茫的大四🐶:自信一点,我认为你可以拿到50k,低于50k完全配不上你的能力,兄弟,不要被他们骗了,你可以的
点赞 评论 收藏
分享
湫湫湫不会java:写的很杂,连自己都不知道找什么工作的感觉,只是要份工作。针对自己稍微有点优势的方向好好整份简历投投吧,然后这杂的简历就辅助投投,因为自己认为的优势可能也不是很大的优势all in可能失业,自己也没有啥很想的方向还是可以用这通用的碰碰运气吧,加油
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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