用 javascript 实现一个函数 parseUrl(url

2019-04-19  本文已影响0人  小强不是蟑螂啊

题目:
使用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('/')   
   };   
} 
上一篇下一篇

猜你喜欢

热点阅读