用 javascript 实现一个函数 parseUrl(url),将一段 url字符串解析为 Object

题目:
使用parseUrl函数, parseUrl("http://www.xiyanghui.com/product/list?id=123456&sort=discount#title");
期望得到结果:

{
protocol: "http",
host: "www.xiyanghui.com",
path: "/product/list",
params: {
id: "12345",
sort: "discount"
},
hash: "title"
}
这道题先生成成a标签,然后用a标签的属性和正则获取各个属性。

function parseUrl(url) {   
    var a =  document.createElement('a');   
    a.href = url;   
    return {   
        source: url,   
        protocol: a.protocol.replace(':',''),   
        host: a.hostname,   
        port: a.port,   
        query: a.search,   
        params: (() => {   
            var ret = {}, querys = []; 
            var searchQuery = a.search.replace(/^\?/,'').split('&');
            for ( var i = 0;i < searchQuery.length; i++) {   
                if (searchQuery[i]) { 
                   querys = searchQuery[i].split('=');   
                   ret[querys[0]] = querys[1]; 
                }  
            }   
            return ret;   
        })(),  
        file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1],   
        hash: a.hash.replace('#',''),   
        path: a.pathname.replace(/^([^\/])/,'/$1'),   
        relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,''])[1],   
        segments: a.pathname.replace(/^\//,'').split('/')   
   };   
} 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容