zoukankan      html  css  js  c++  java
  • 前端攻城狮学习笔记三:实现一个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基础知识,如字符串的分割连接等等,算是比较简单的一题了。当然,简单的题也能写出高质量的代码,期待高手分享。

  • 相关阅读:
    面试题 面试技巧
    面试 11-02.ES6
    面试 11-00.JavaScript高级面试
    面试 11-01.ES6:模块化的使用和编译环境
    面试 10-01.页面性能优化
    面试 09-02.js运行机制:异步和单线程
    面试 10-02.前端错误监控
    选择屏幕-SELECTION-SCREEN(二)
    ◆◆0如何创建代码模板
    行选择交互事件
  • 原文地址:https://www.cnblogs.com/jscode/p/2577648.html
Copyright © 2011-2022 走看看