Loading

获取url参数和key

url参数和key

function getUrlParam(sUrl, sKey) {
        var paramsN = sUrl.split("?")[1];//取出url后的字符串  key=1&key=2&key=3&key=4&test=4#hehe
        var params = paramsN.split("#")[0];//剔除字符串#后的杂质  key=1&key=2&key=3&key=4&test=4
        var param = params.split("&");//将字符串分割为键值对为一项的数组
        console.log(param)//0: "key=1  1: "key=2"  2: "key=3"  3: "key=4"  4: "test=4"
        var arr = [];

        if (sKey) {//如果有参数
            for (var i = 0; i < param.length; i++) {//遍历键值对数组
                var keyV = param[i].split("=");//分开键和值
                if (keyV[0] === sKey) {//如果键名和传入的参数一样的键,则将其值插入到空数组中
                    arr.push(keyV[1]);
                }
            }
            if (arr.length === 0) {//如果数组仍为空,则证明没有传入key的对应参数的值
                return "";
            } else if (arr.length > 1) {//有多个值
                return arr;
            } else {//只有一个值
                return arr[0];
            }
        } else {//没有传入参数,返回对象
            var obj = {};
            for (var i = 0; i < param.length; i++) {//遍历
                var keyV = param[i].split("=");//分开键和值
                if (obj[keyV[0]]) {//如果对象中有该属性
                    obj[keyV[0]].push(keyV[1])//插入该属性中的数组中
                } else {
                    obj[keyV[0]] = [keyV[1]]//如果没有则创建一个数组并且把值放入该数组中
                }
            }
            for (var key in obj) {//遍历插入数据的对象
                if (obj[key].length === 1) {//如果该对象的属性值的数组的长度为一
                    obj[key] = obj[key][0]//则让该对象的该属性值为数组里的值
                }
            }
            return obj;
        }
    }
 
总结:查找url参数本身并不难,关键是字符串的分割,拼接以及skey参数的确认
posted @ 2021-05-26 20:57  大黄树  阅读(250)  评论(0)    收藏  举报