当前位置: 首页 > news >正文

【前端笔试题一】:解析url路径中的query参数

前言

本文记录下在笔试过程中的前端笔试编程题目,会持续更新

1. 题目:

解析 url 路径中的 query 参数,比如:‘http://building/#/skeleton?serialNumber=2023020818332821073&jobNo=210347&target=%7B%22a%22%3A%22b%22%2C%22c%22%3A%22d%22%7D&flag=tudoFlag’

需要将其转换成的格式如下:

{serialNumber: "2023020818332821073",jobNo: "210347",target: {a: "b",c: "d"}
}

2. 思路

对于 url,我们需要考虑的是:URL 是笔试时题目中给定的,还是需要我们自己获取?

如果是题目中给定的,我们直接拿来用即可,

如果题目中没给,我们则需要使用 window.location.search 进行获取,

其次,query 参数 指的是 URL 中 ? 后面的部分,且格式为: “key=value” ,所以需要对 URL 进行分割

然后再次以 & 进行分割,返回的是一个数组,数组每一项,= 前面的是值,后面的是键。

对该数组进行遍历,对每一个元素以 = 进行分割。

注意: URL中很多内容会出现 % 这样的内容,这实际上是对参数进行了URI编码

对于这类的编码参数如何处理?自然是需要进行解码decodeURIComponent,并且需要 JSON.parse()

区别是否是 URI编码的特征就是:是否包含 %

3. 代码

const url = 'http://building/#/skeleton?serialNumber=2023020818332821073&jobNo=210347&target=%7B%22a%22%3A%22b%22%2C%22c%22%3A%22d%22%7D&flag=tudoFlag'const getQueryString = (url) => {let obj = {}let arr = url.split('?')[1]let newArr = arr.split('&')newArr.forEach((item) => {let key = item.split('=')[0]let value = item.split('=')[1]if(value.indexOf('%') == -1) {// 不存在 % ,obj[key] = value} else {// 存在,需要进行解码obj[key] = JSON.parse(decodeURIComponent(value))}})return obj
}console.log(getQueryString(url))

效果如下所示:

在这里插入图片描述

http://www.lryc.cn/news/810.html

相关文章:

  • K_A12_001 基于STM32等单片机采集火光火焰传感参数串口与OLED0.96双显示
  • Java基础42 枚举与注解
  • shell的变量和引用
  • 基于PHP的招聘网站
  • 轻松使用 Python 检测和识别车牌(附代码)
  • DVWA—CSRF-Medium跨站请求伪造中级
  • 【电商】后台订单生成
  • 作为公司,这个5款在线软件工具赶紧安利起来!
  • 面试(七)为什么一般希望将析构函数定义为虚函数
  • MySQL必会四大函数-时间函数
  • 震惊!邻桌的程序猿做可视化报告竟然比我还快,带着好奇心我打开了他的电脑,发现惊天秘密,原因竟是...
  • mathtype7与word冲突,无法安装,不显示工具栏的问题解决
  • IBM AIX 升级Openssh 实现篇(编译安装)
  • linux的睡眠框架及实现
  • Java面试知识点
  • PTA Advanced 1159 Structure of a Binary Tree C++
  • CDN绕过技术总汇
  • 算法训练营DAY51|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
  • mac:彻底解决-安装应用后提示:无法打开“XXX”,因为无法验证开发者的问题;无法验证此App不包含恶意软件
  • CPU 指标 user/idle/system 说明
  • Thinkphp大型进销存ERP源码/ 进销存APP源码/小程序ERP系统/含VUE源码支持二次开发
  • hgame2023 WebMisc
  • 67. Python的绝对路径
  • VHDL语言基础-组合逻辑电路-加法器
  • 内存检测工具Dr.Memory在Windows上的使用
  • J6412四网口迷你主机折腾虚拟机教程
  • 电子招标采购系统—企业战略布局下的采购寻源
  • elasticsearch 之 mapping 映射
  • 2023年rabbitMq面试题汇总2(5道)
  • 电视剧《狂飙》数据分析,正片有效播放市场占有率达65.7%