将查询的参数转对象
export function getUrlParams(url) {
url = url || window.location.href
let params = {}
let { hash, search } = new URL(url, location.origin)
if (url.lastIndexOf('#') < url.lastIndexOf('?')) {
//URL方法解析顺序:search=>hash。如果hash在search前面,则search的值被拼在hash后面
search = hash.split('?')[1]
}
let searchURL = new URLSearchParams(search)
searchURL.forEach((value, key) => (params[key] = value))
return params
}
getUrlParams('http://localhost:3000/#/dataBoard?tabKey=2') //返回{tabKey: '2'}
getUrlParams('http://localhost:3000?tabKey=2#/dataBoard') //返回{tabKey: '2'}
将对象转查询的参数
export function toQueryString(obj) {
if(Object.prototype.toString.call(obj) !== "[object Object]") return "";
let arr = []
for (const key in obj) {
if (Object.hasOwnProperty.call(obj, key)) {
arr.push(`${key}=${obj[key]}`)
}
}
return arr.join('&')
}
ObjectToQuery({aaa:555,bbb:888})//返回:aaa=555&bbb=888