思路

由于下面的代码用的是简写的方式 为了所有人都能看得懂 或者说即使看不懂 看到思路 根据思路也能实现、
所以写了以下的个人思路 有不好的 请私信我 对于私信的人 感激不尽 因为的你私信会让小编更上一层楼

  1. 定义一个url地址(就是确定要 解析的url地址)
  2. 定义一个方法用来解析参数
  3. 方法:先创建一个对象,用于存放参数的键值对
  4. 方法:先判断传入的参数是否为空 为空 直接返回一个空对象,不为空 进行解析
  5. 方法:使用split方法把 ? 符号之前的数据剔除
  6. 方法:使用split方法把数据以 & 作为切割点 切割成数组
  7. 方法:使用forEach对切割好的数组进行遍历
  8. 方法:再次使用split方法 把遍历的每一项 以 = 进行分割 分割成的数组的第一项作为 key 属性 第二项作为 value 属性 存放到之前定义好的 空对象中
  9. 方法:返回这个对象

具体实现代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 定义一个需要传递的URL
const url = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu'
/*
* str =>需要解析的url
* 返回的是一个解析好的对象
* {
f: "8"
ie: "utf-8"
rsv_bp: "1"
tn: "baidu"
}
*/
const qureyUrlParams = function (str) {
const objStr = {}
str && str.split('?')[1].split('&').forEach(item => objStr[item.split('=')[0]] = item.split('=')[1]);
return objStr
}
console.log(qureyUrlParams(url));

相信 以上面写的思路,大家都能看的非常明白

但是:小编觉得这不是最好的解决方案,最好的解决方案是用正则表达式来进行解析。

正则表达式 的解决方案 详见 小编的 正则表达式 里面的案例

如果能够帮助到你,是小编最大的荣幸

当然 有 不好的地方 请大家帮忙指出 学习永无止境

小编一直认为 人外有人 天外有天 一起学习 共同进步

让我们共同加油吧!!!