• 获取url参数 牛客


    题目描述


    获取 url 中的参数

    1. 指定参数名称,返回该参数的值 或者 空字符串
    2. 不指定参数名称,返回全部的参数对象 或者 {}
    3. 如果存在多个同名参数,则返回数组

    示例

    输入
    http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe key
    输出
    [1, 2, 3]
    

    来源:获取 url 中的参数

    解法:

    • 使用split方法分割字符串得到参数序列数组[ 'key=1', 'key=2', 'key=3', 'test=4' ]
    • 设置一个对象以键值对的方式存数据,对重复出现的数据转换为数组
    • 判断是否含有sKey,没有则输出整个对象,有则判断res[sKey],为空则输出空字符串'',不为空输出res[sKey]
    function getUrlParam(sUrl, sKey) {
        let res = {};
        let params = sUrl.split('?')[1].split('#')[0].split('&');
        console.log(params);//[ 'key=1', 'key=2', 'key=3', 'test=4' ]
        /* 提取键值对存到对象 */
        params.forEach(v => {
            let [key, val] = v.split('=');
            if (res[key])
                res[key] = [...res[key], val];
            else
                res[key] = val;
        })
        /* sKey为空直接返回对象 */
        if (sKey === undefined) return res;
        else {
            if (res[sKey] === undefined) return '';
            else return res[sKey];
        }
    }
    

    另外还可以使用replace结合正则匹配获取键值对实现

    function getUrlParam(sUrl, sKey) {
        let res = {};
        sUrl.replace(/??(w+)=(w+)&?/g, (str, key, val) => {
            if (res[key])//值不止一个则转换为数组
                res[key] = [...res[key], val];
            else
                res[key] = val;
        })
        if (sKey === undefined) {
            return res;
        } else {
            if (res[sKey] === undefined) return '';
            else return res[sKey];
        }
    }
    
  • 相关阅读:
    用AB对Webservice做压力测试
    web压力测试工具(小而精)
    让IIS支持10万并发
    数据库之间数据转换最快方法
    C#中执行Dos命令
    .NET 4.0中使用内存映射文件实现进程通讯
    HTML解析利器HtmlAgilityPack
    C#快速找出磁盘内的所有文件
    ORM for Net主流框架汇总与效率测试
    新浪微博基于MySQL的分布式数据库实践
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/12990170.html
Copyright © 2020-2023  润新知