前端攻城狮学习笔记三:实现一个URI解析方法,把url里#之后的参数解析成指定的数据结构。

面试题目

  这是搜狐JavaScript面试题,要求如下:

  实现一个URI解析方法,把url里#之后的参数解析成指定的数据结构。

function urlParser(s){

        //+++++++++++答题区域+++++++++++







                

        //+++++++++++答题结束+++++++++++

}



try{

        var url1 = "http://www.abc.com/m/s/#page/2/?type=latest_videos&page_size=20";

        var url2 = "http://www.abc.com/m/s/#type=latest_videos&page_size=20";

        var url3 = "http://www.abc.com/m/s/#page?type=latest_videos&page_size=20";



        console.group();

        console.info( urlParser(url1) );

        console.info( urlParser(url2) );

        console.info( urlParser(url3) );

        console.groupEnd();

        /*------[执行结果]------



        ["page", "2", { "type": "latest_videos", "page_size": 20 }]

        [{ "type": "latest_videos", "page_size": 20 }]

        ["page", { "type": "latest_videos", "page_size": 20 }]

        

        ------------------*/

        

}catch(e){

        console.error("执行出错,错误信息: " + e);

}

分析过程

  这一题考的是基础,没什么好分析的,直接上代码吧。

function urlParser(s){

    //+++++++++++答题区域+++++++++++

    var mArr=[];

    var pArr=[];

    var m=s.split("#")[1],p="";

    if(m.indexOf("?")>-1){

        var temp=m.split("?")[0];

        p=m.split("?")[1];

        mArr=temp.split("/");

        if(mArr[mArr.length-1] === ""){

            mArr.pop();

        }

    }

    else{

        p=m;

    }



    pArr=p.split("&");

    var str="[";

    for(var i=0,l=mArr.length;i<l;i++){

        str+="\""+mArr[i]+"\",";

    }

    str+="{";

    for(var i=0,l=pArr.length;i<l;i++){

        str+="\""+pArr[i].split("=").join("\":\"")+"\",";

    }

    str+="}]";

    return str.replace(",}]","}]");

                

    //+++++++++++答题结束+++++++++++

}

小结

  这一题考查的是JavaScript基础知识,如字符串的分割连接等等,算是比较简单的一题了。当然,简单的题也能写出高质量的代码,期待高手分享。

你可能感兴趣的:(数据结构)