JS笔试题剖析(2)

请求:
1、只能在指定的位置填写本身的代码,本文件里的其他代码不能修正
2、一切问题都不许可增加全局变量名
3、本文件应当能在firebug的console里一般实行,并输出效果
4、代码最优化,效力最高
5、代码解释明白

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);
}

让我们先来梳理下解题思绪:

  1. 起首视察url1,url2,url3的区分。

  2. 然后视察实行效果的3段输出内容。

  3. 末了找url1,url2,url3对应的输出内容的联络。

最先解题:

function urlParser(s){
    var a = [];
    /*建立个空字符串,贮存输出的内容*/
    var _w = s.split("#")[1];
    /*把传入的参数url1...用#支解,猎取第二部份,也就是#背面的字符串*/
    var _json = {}; 
    /*创输出数组中的json元素*/
    var _q = _w.split("?");
    /*把#号背面的字符串用?支解,实际上就url1,url3支解2段,url2不做支解*/
    var _s = _q[0].split("/",2);
    /*把?前面的字符串用/支解,最高许可支解2段。*/
    for(var i=0;i<_s.length;i++){
    /*遍历#号到?号之间的数组*/ 
        if(_q.length === 2){
        /*当_q的长度为2时实行,也就是不实行传入url2*/
            a.push(_s[i]);
            /*将url1和url3中#号到?号之间的数组从后顺次传入a*/
        }
    }
    if(_q[1]){
    /*假如参数中有?号,实行以下代码(url1,url3)*/
        var _a = _q[1].split("&");
        /*将?号支解的字符串第二段中再用&号支解*/
        for(var j=0;j<_a.length;j++){
        /*遍历?号背面的[type=latest_videos,page_size=20]长度为2的数组*/
            var _e = _a[j].split("=");    
            /*将数组[type=latest_videos,page_size=20],用=号支解,输出[type,latest_videos],[page_size,20]*/
            _json[_e[0]] = _e[1];
            /*把等号前面的与背面的分别用属性和属性值来传入_json对象*/

        }
    }else{
    /*不然实行(url2)*/
        var _a = _q[0].split("&");
        /*将?号支解的字符串第一段中再用&号支解*/
        for(var k=0;k<_a.length;k++){
            var _e = _a[k].split("=");
            _json[_e[0]] = _e[1]; 
        }
    }
    a.push(_json);
    /*将_json传入a数组中*/
    return JSON.stringify(a);
    /*函数终究返回数组a*/
}
    原文作者:徐鹏云
    原文地址: https://segmentfault.com/a/1190000008483881
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞