Codog

关注微信公众号:Codog代码狗

0%

从浏览器URL中获取查询参数

自己尝试写的:

1
2
3
4
5
6
7
8
9
10
11
function parser(urlStr, key) {
const url = new URL(urlStr)
const map = new Map
// search字段会返回 '?name=aaa&age=18'
const paramsArr = url.search.match(/\?(\S+)/)[1].split('&')
console.log(paramsArr)
return new Map(paramsArr.map(item => {
const parts = item.split('=')
return [parts[0], parts[1]]
})).get(key)
}

个人认为主要考的是如何用正则取出数据,字符串方法也可以做

解析整个url参数:

1
2
3
4
5
6
7
function query(name) {
const search = location.search.substr(1)
const res = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, 'i')

const res = search.match(reg)
return res[2]
}

或者直接使用URLSearchParams对象

1
2
3
4
5
6
function query(name) {
const search = location.search
const p = new URLSearchParams(search)

return p.get(name)
}

TODO: vue-router的方法