最近看到一个题目,要求写一个函数来获取url携带的参数,自己也是经常用到,所以将代码贴出来备用:
function urlParse(url) {
var obj = {}
var reg =
/[?&][^?&]+=[^?&]+/g
var arr = url.match(reg)
if (arr) {
arr.forEach
((item) => {
var tempArr = item.substring(1).split('=')
var key = decodeURIComponent(tempArr[0])
var value = decodeURIComponent(tempArr[1])
obj[key] = value
})
}
return obj
}
这里用一个正则表达式来匹配每一个参数项(以?或&开头),然后将获取到的字符串的第一个字符(?或&)省略,再将其以等号切片,将前面的部分解码作为key,后面的部分解码作为value,然后加入对象obj,最后返回obj