资讯专栏INFORMATION COLUMN

JS笔试题分析(2)

XanaHopper / 1681人阅读

摘要:开始解题创建个空字符串,储存输出的内容把传入的参数用分割,获取第二部分,也就是后面的字符串创输出数组中的元素把号后面的字符串用分割实际上就分割段,不做分割把前面的字符串用分割,最高允许分割段。

要求:
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);
}

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

首先观察url1,url2,url3的区别。

然后观察执行结果的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://www.ucloud.cn/yun/81746.html

相关文章

  • JS笔试分析(1)

    摘要:要求只能在指定的位置填写自己的代码,本文件里的其他代码不能修改所有题目都不允许添加全局变量名本文件应该能在的里正常执行,并输出结果代码最优化,效率最高代码注释明确答题开始答题结束执行结果 要求:1、只能在指定的位置填写自己的代码,本文件里的其他代码不能修改2、所有题目都不允许添加全局变量名3、本文件应该能在firebug的console里正常执行,并输出结果4、代码最优化,效率最高5、...

    Markxu 评论0 收藏0
  • 一次前端笔试总结

    摘要:另外,原题还有字数限制的,只有在字数小于并且结果正确时才可以满分。插入节点操作的可以使用和方法,随便用一个都行。但是,这题有两个限制条件优雅的方式前个元素。 1.有一个长度未知的数组a,如果它的长度为0就把数字1添加到数组里面,否则按照先进先出的队列规则让第一个元素出队。 分析:这道题主要是考核了数组的队列方法和栈方法。另外,原题还有字数限制的,只有在字数小于30并且结果正确时才可以满...

    jsdt 评论0 收藏0
  • 一次前端笔试总结

    摘要:另外,原题还有字数限制的,只有在字数小于并且结果正确时才可以满分。插入节点操作的可以使用和方法,随便用一个都行。但是,这题有两个限制条件优雅的方式前个元素。 1.有一个长度未知的数组a,如果它的长度为0就把数字1添加到数组里面,否则按照先进先出的队列规则让第一个元素出队。 分析:这道题主要是考核了数组的队列方法和栈方法。另外,原题还有字数限制的,只有在字数小于30并且结果正确时才可以满...

    GitChat 评论0 收藏0
  • 一次前端笔试总结

    摘要:另外,原题还有字数限制的,只有在字数小于并且结果正确时才可以满分。插入节点操作的可以使用和方法,随便用一个都行。但是,这题有两个限制条件优雅的方式前个元素。 1.有一个长度未知的数组a,如果它的长度为0就把数字1添加到数组里面,否则按照先进先出的队列规则让第一个元素出队。 分析:这道题主要是考核了数组的队列方法和栈方法。另外,原题还有字数限制的,只有在字数小于30并且结果正确时才可以满...

    honhon 评论0 收藏0
  • 你不能错过的前端面试合集

    摘要:收集的一些前端面试题从面试题发现不足,进而查漏补缺,比通过面试更难得及各大互联网公司前端笔试面试题篇及各大互联网公司前端笔试面试题篇面试题个和个经典面试题前端开发面试题如何面试前端工程师很重要个变态题解析如何通过饿了么面试轻 收集的一些前端面试题 从面试题发现不足,进而查漏补缺,比通过面试更难得 1 BAT及各大互联网公司2014前端笔试面试题--Html,Css篇 2 BAT...

    ninefive 评论0 收藏0

发表评论

0条评论

XanaHopper

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<