js解析url,將如下url中的引數解析為key-value物件
https://mp.weixin.qq.com/adva...
方法1,split() + 迴圈依次取出
parseURLParams(url) {
let queryParams = {}
// 判斷是否有引數
if (url.indexOf('?') < 0) return queryParams
// 分離域名和引數
let domainAndParams = url.split('?')
// 引數切分
let queryStr = domainAndParams[1]
let queryItems = queryStr.split('&')
// 迴圈引數,把引數轉為鍵值對
queryItems.forEach(item => {
let paramKV = item.split('=')
queryParams[paramKV[0]] = paramKV[1]
})
// 返回引數鍵值對
return queryParams
}
方法2,正則 + arguments
parseURLParams(url) {
let queryParams = {}
// 正則匹配規則
let reg = /([^?=&]+)=([^?=&]+)/g
// 利用replace替換
url.replace(reg, function() {
// 用偽陣列進行鍵值對拼接
queryParams[arguments[1]] = arguments[2]
})
// 返回引數鍵值對
return queryParams
}
方法3,正則 + ...arg
parseURLParams(url) {
let queryParams = {}
// 正則匹配規則
let reg = /([^?=&]+)=([^?=&]+)/g
// 利用replace替換
url.replace(reg, function() {
// 用偽陣列進行鍵值對拼接
queryParams[arguments[1]] = arguments[2]
})
// 返回引數鍵值對
return queryParams