没有娃娃菜怎么吃火锅 进来随便坐
查询字符串参数
发布于: 2020-04-19 更新于: 2020-04-24 分类于: JavaScript 阅读次数: 

给定一个携带参数的字符串url,要求将各参数以对象形式显示。

涉及到的知识点:

indexOf(): 返回调用它的String对象中第一次出现的指定值的索引。若未找到,返回-1 。

substring() :返回一个新的子字符串。

split() (中文:分裂):使用指定的分隔符字符串将一个String对象分割成子字符串数组。

decodeURIComponent() :用于解码由encodeURIComponent方法或其他类似方法编码的部分统一资源标识符(URI)。

完整代码👇

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE html>
<html>
<head>
<title>查询字符串参数</title>
<script>
// url字符串:https://github.com/search?p=3&q=xd%20u&type=Repositories
// {p:3,q:xd u,type:Repositories}
var queryString = "https://github.com/search?p=3&q=xd%20u&type=Repositories"
// qs返回索引25
var qs = queryString.indexOf("?")
//截取字符串 从qs+1开始 也就是截取?之后的字符串
//subString()方法不改变原字符串
var newqs = queryString.substring(qs+1)
console.log(newqs) //"p=3&q=xd%20u&type=Repositories"
//保存数据的对象
var args = {}
//取得每一项 items数组
var items = newqs.length ? newqs.split("&") : []
console.log(items) //["p=3", "q=xd%20u", "type=Repositories"]
for(let i = 0; i < items.length; i++){
var item = items[i].split("=")
//解码
//查询字符串应该是被编码过的 %20解码后显示为“ ”
var key = decodeURIComponent(item[0])
var value =decodeURIComponent( item[1])
if(key.length){
args[key] = value
}
}
console.log(args) //{p: "3", q: "xd u", type: "Repositories"}

</script>
</head>
<body>

</body>
</html>
--- 本文结束 The End ---