一. javascript 实现一个函数 parseUrl(url),将一段 url 字符串解析为 Object.
eg:
parseUrl("http://www.xiyanghui.com/product/list?id=123456&sort=discount#title");
返回结果
{
protocol: "http",
host: "www.xiyanghui.com",
path: "/product/list",
query: {
id: "123456",
sort: "discount"
},
hash: "title"
}
/**
*
* @param {*} search a.search
*/
function parseParams(search) {
var ret = {};
var searchArr = [];
searchArr = search.replace(/^\?/, '').split('&');
for (let i = 0; i < searchArr.length; i++) {
if (searchArr[i]) {
let querys = searchArr[i].split('=');
console.log(querys);
ret[querys[0]] = querys[1];
}
}
return ret;
}
/**
* 通过创建a标签
* @param {*} url
*/
function parseUrl(url) {
var a = document.createElement('a');
a.href = url;
return ({
protocol: a.protocol,
hostname: a.hostname,
port: a.port,
search: a.search,
params: parseParams(a.search),
hash: a.hash.replace('#', ''),
path: a.pathname,
})
}
var rest = parseUrl("http://www.xiyanghui.com/product/list?id=123456&sort=discount#title");
console.log(rest);
/**
* 通过new URL
* @param {*} url
*/
// IE12及以上兼容
function parseUrlBynewUrl(url) {
var url = new URL(url);
return ({
protocol: url.protocol,
hostname: url.hostname,
port: url.port,
search: url.search,
params: parseParams(url.search),
hash: url.hash.replace('#', ''),
path: url.pathname,
})
}
var restt = parseUrlBynewUrl("http://www.xiyanghui.com/product/list?id=123456&sort=discount#title");
console.log(restt);
}