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