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