题解 | #获取 url 参数#
获取 url 参数
http://www.nowcoder.com/practice/a3ded747e3884a3c86d09d88d1652e10
URL对象
https://zh.javascript.info/url
内建的 URL 类提供了用于创建和解析 URL 的便捷接口。
new URL(url, [base])
url —— 完整的 URL,或者仅路径(如果设置了 base),
base —— 可选的 base URL:如果设置了此参数,且参数 url 只有路径,则会根据这个 base 生成 URL。
function getUrlParam(sUrl, sKey) {
let answer = {}
const url = new URL(sUrl)
params = url.search.substr(1).split('&') //将参数字符串分离
for (let k in params) {
const paramsItem = (params[k].split('=')) //将key和value分离
//如果对象中存在该属性,直接push新结果
if (answer[paramsItem[0]]) {
answer[paramsItem[0]].push(paramsItem[1])
} else {
//若不存在,则创建新属性
answer[paramsItem[0]] = [paramsItem[1]]
}
}
if (sKey) {
//如果给了指定值
if (answer[sKey]){
//若只有一个参数,则返回数组第一项
if(answer[sKey].length === 1) return answer[sKey][0]
//若存在则返回数组
return answer[sKey]
}
//不存在则返回空字符串
return ''
} else {
//没有指定值则返回全部对象
return answer
}
}
