【前端手撕】url解析
手写 URL 查询字符串解析器作用是把https://xxx.com?name张三age18这种网址后面的参数解析成一个方便调用的对象{ name: 张三, age: 18 }。思路是先做划分再逐一解析之后加入到resObj中需要注意的是1. 如果串里有相同的键则该键的值应该是一个数组。2. 中文或特殊字符会被编码需要解码。代码const parseUrl (url) { const tmpUrl url.split(?)[1] const resObj {} for (const item of tmpUrl.split()) { let [key, value] item.split() // 解码value value decodeURIComponent(value) if (resObj.hasOwnProperty(key)) { resObj[key] [].concat(resObj[key], value) } else { resObj[key] value } } return resObj }这里讲一下concatconcat作用是拼接两个数组但传参的话可以是数组也可以是值参数是数组把该数组的每个元素拉平只会拉平一层放入新数组。参数是非数组普通值把这个值原封不动作为一项放入新数组。这样无论resObj[key]当前是字符串还是数组都能干净利落地把它变成数组并追加新值。Tipd老师说有几个点可以改进一下没处理#锚点如果 URL 是?a1#topsplit(?)[1]拿到的会是a1#top结果对象会变成{ a#top: ... }逻辑会崩。没处理号HTML 表单中空格常被编码为但decodeURIComponent不会把转成空格导致解析错误。值里带了号会崩比如?q112split()会切成三个片段解构[key, value]只拿前两个后面的2直接丢掉。

相关新闻

MC68EC030嵌入式CPU:缓存、总线与系统设计深度解析

MC68EC030嵌入式CPU:缓存、总线与系统设计深度解析

1. 项目概述:MC68EC030,一个被低估的嵌入式性能基石在90年代初的嵌入式江湖里,当大家还在为8位或16位微控制器的性能和成本纠结时,摩托罗拉(后来的飞思卡尔)的M68000家族已经悄然布局32位市场。今天要聊的M…

2026/6/19 17:26:38阅读更多 →
D435i:从单目误解到双目真相,揭秘其SLAM与VIO应用之道

D435i:从单目误解到双目真相,揭秘其SLAM与VIO应用之道

1. D435i的硬件构成:从单目误解到双目真相 第一次拿到D435i时,我也被它的外观迷惑了——正面只有一个明显的RGB摄像头,这不就是个单目摄像头吗?但当我开始用它跑VINS-Fusion时,发现事情没那么简单。仔细研究后才发现&a…

2026/6/19 17:26:38阅读更多 →
OpenCore Legacy Patcher:让老旧Mac重获新生的完整指南 [特殊字符]

OpenCore Legacy Patcher:让老旧Mac重获新生的完整指南 [特殊字符]

OpenCore Legacy Patcher:让老旧Mac重获新生的完整指南 🚀 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台被苹果官方抛弃…

2026/6/19 17:21:35阅读更多 →
Jetson Orin NX 开发指南(8): EGO-Swarm 与 VINS-Fusion 的深度集成与实战调优

Jetson Orin NX 开发指南(8): EGO-Swarm 与 VINS-Fusion 的深度集成与实战调优

1. EGO-Swarm与VINS-Fusion深度集成的核心价值 在无人机和智能小车开发领域,轨迹规划与视觉里程计的协同工作一直是实现自主导航的关键。EGO-Swarm作为浙江大学FAST-LAB实验室的开源集群规划算法,其独特之处在于采用去中心化架构和基于B样条的规划方法&a…

2026/6/19 18:46:50阅读更多 →
CyberdropBunkrDownloader:让批量文件下载变得简单高效

CyberdropBunkrDownloader:让批量文件下载变得简单高效

CyberdropBunkrDownloader:让批量文件下载变得简单高效 【免费下载链接】CyberdropBunkrDownloader Simple downloader for Cyberdrop and Bunkrr 项目地址: https://gitcode.com/gh_mirrors/cy/CyberdropBunkrDownloader 在数字内容日益丰富的今天&#xff…

2026/6/19 18:46:50阅读更多 →
Parsec VDD完全指南:免费开源的Windows虚拟显示器解决方案

Parsec VDD完全指南:免费开源的Windows虚拟显示器解决方案

Parsec VDD完全指南:免费开源的Windows虚拟显示器解决方案 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 你是否曾经遇到过需要扩展屏幕空间却没有物理显示器的困扰&…

2026/6/19 18:46:50阅读更多 →
高效能烤盘定制厂家哪个比较靠谱

高效能烤盘定制厂家哪个比较靠谱

开篇核心亮点江苏台烁烘焙器具有限公司是面向大中型工业化食品生产企业的可定制工艺不粘烤盘专业供应商,可针对客户产线参数、工艺需求提供适配性定制方案,帮助客户实现提效降本。核心优势与关键数据资质与合作基础:拥有30项专利,…

2026/6/19 18:46:50阅读更多 →
如何在5分钟内创建逼真的3D树木:Tree.js完整指南

如何在5分钟内创建逼真的3D树木:Tree.js完整指南

如何在5分钟内创建逼真的3D树木:Tree.js完整指南 【免费下载链接】tree-js Procedural tree generator written with JavaScript and Three.js 项目地址: https://gitcode.com/gh_mirrors/tr/tree-js 你是否曾经为WebGL项目中的树木建模而烦恼?手…

2026/6/19 18:46:50阅读更多 →
MPC555/556复位与时钟系统:汽车电子高可靠设计的核心机制

MPC555/556复位与时钟系统:汽车电子高可靠设计的核心机制

1. 项目概述:深入MPC555/556的“心脏”与“重启键”在嵌入式系统,尤其是汽车电子和工业控制这类对可靠性要求近乎苛刻的领域,微控制器(MCU)的稳定运行是系统生命线。而这条生命线的起点和守护者,正是复位机…

2026/6/19 18:41:50阅读更多 →
Photobucket付费墙背后:5美元买童年回忆却落得一场空!

Photobucket付费墙背后:5美元买童年回忆却落得一场空!

1. 付费墙初现如今身处万亿市值公司林立的时代,我们也不能轻易放弃5美元。就像Photobucket,它曾相当于过去的Imgur,我们小时候常把图片上传到这个网站,然后在各种论坛上分享链接,它简单好用,尽职尽责。但最…

2026/6/19 0:04:37阅读更多 →
如何在5分钟内掌握Mermaid Live Editor:实时图表编辑终极指南

如何在5分钟内掌握Mermaid Live Editor:实时图表编辑终极指南

如何在5分钟内掌握Mermaid Live Editor:实时图表编辑终极指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live…

2026/6/19 0:04:37阅读更多 →
yuzu模拟器内存修改技术深度解析:金手指功能实现原理与实践指南

yuzu模拟器内存修改技术深度解析:金手指功能实现原理与实践指南

yuzu模拟器内存修改技术深度解析:金手指功能实现原理与实践指南 【免费下载链接】yuzu 项目地址: https://gitcode.com/GitHub_Trending/yuz/yuzu yuzu作为目前最流行的开源Nintendo Switch模拟器,不仅提供了完整的游戏运行环境,还内…

2026/6/19 0:04:37阅读更多 →