url 解析
function parseParam(url) { const paramsStr = /.+\?(.+)$/.exec(url)[1]; // 将 ? 后面的字符串取出来 //exec() 方法用于检索字符串中的正则表达式的匹配。 const paramsArr = paramsStr.split('&'); // 将字符串以 & 分割后存到数组中 let paramsObj = {}; // 将 params 存到对象中 paramsArr.forEach(param => { if (/=/.test(param)) { // 处理有 value 的参数 // 数组解构 let [key, val] = param.split('='); // 分割 key 和 value val = decodeURIComponent(val); // 解码 val = /^\d+$/.test(val) ? parseFloat(val) : val; // 判断是否转为数字 //test() 方法用于检测一个字符串是否匹配某个模式. if (paramsObj.hasOwnProperty(key)) { // 如果对象有 key,则添加一个值 paramsObj[key] = [].concat(paramsObj[key], val); //concat() 方法用于连接两个或多个数组。 //该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。 } else { // 如果对象没有这个 key,创建 key 并设置值 paramsObj[key] = val; } } else { // 处理没有 value 的参数 paramsObj[param] = true; } }) return paramsObj; } let str = 'https://www.baidu.com/s?a=1&b=2&a=3' console.log(parseParam(str));
作者:孟繁贵 Email:meng010387@126.com 期待共同进步!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
· 记录一次线上服务OOM排查
· 2025年广告第一单,试试这款永久免费的开源BI工具
· 为什么 .NET8线程池 容易引发线程饥饿
· 在 .NET 中使用 Tesseract 识别图片文字
· 场景题:假设有40亿QQ号,但只有1G内存,如何实现去重?
· BotSharp:又一个.Net重磅AI开源项目,.Net在AI领域开始崛起!