[牛客网-前端大挑战QD2] 获取url参数

题目描述

获取 url 中的参数

1.指定参数名称,返回该参数的值 或者 空字符串

2.不指定参数名称,返回全部的参数对象 或者 {}

3.如果存在多个同名参数,则返回数组

示例1

输入

http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe key

输出

[1, 2, 3]

代码

function getUrlParam(sUrl, sKey) {
    
    
    //字符分割获取键值对字符串
    var Url = sUrl.split('#')[0].split('?')[1].split('&');
    // console.log(Url);
    // 0: "key=1"
    // 1: "key=2"
    // 2: "key=3"
    // 3: "test=4"
    var res = {
    
    };
    //分离键值对
    for(var i = 0;i<Url.length;i++){
    
    
        var kv = Url[i].split('=');
        //已经含有该属性,直接push
        if(res.hasOwnProperty(kv[0])){
    
    
            res[kv[0]].push(kv[1]);
        }
        //不含该属性,创建空数组存放
        else{
    
    
            res[kv[0]] = [];
            res[kv[0]].push(kv[1]);
        }
    }
    // console.log(res);
    // key: (3) ["1", "2", "3"]
    // test: ["4"]
    //指定sKey
    if(sKey!=null){
    
    
        //含有sKey该属性
        if(res.hasOwnProperty(sKey)){
    
    
            //只有一个同名参数
            if(res[sKey].length == 1){
    
    
                return res[sKey][0];
            }
            //该参数的值为空
            if(res[sKey].length == 0){
    
    
                return "";
            }
            //多个同名参数,返回数组
            return res[sKey];
        }
        //不含sKey属性
        return "";
    }
    //不指定sKey,返回全部参数对象
    return res;
}

猜你喜欢

转载自blog.csdn.net/Twinkle_sone/article/details/107985867