猿问

搜狐JvaaScript面试题:实现一个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);
}

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

繁星coding
浏览 492回答 2
2回答

杨__羊羊

function urlParser(s){ //+++++++++++答题区域+++++++++++ var str=s.split("#")[1];//取到#以后的内容 var jsonStr="";//定义一字符串 if(str.indexOf("?")!=-1){//判断是否有?如果有则前面的内容 var textStr=str.split("?");//取到?前面的内容 if(textStr[0].indexOf("/")!=-1){//判断是否有/ for(var i=0;i<textStr[0].split("/").length-1;i++){ jsonStr+="'"+textStr[0].split("/")[i]+"',";//取到/之间的内容 } }else{ jsonStr+="'"+textStr[0]+"',";//如果没有/则直接取内容 } jsonStr="["+jsonStr+"{'type':'"+textStr[1].split("&")[0].split("=")[1]+"','page_size':'"+textStr[1].split("&")[1].split("=")[1]+"'}]";//拼接字符串 }else{//判断是否有?如果没有则取#后面的内容 jsonStr="[{'type':'"+str.split("&")[0].split("=")[1]+"','page_size:'"+str.split("&")[1].split("=")[1]+"'}]";//拼接字符串 } return jsonStr; //+++++++++++答题结束+++++++++++} 写的不是很好

忽然笑

参考下 jquery BBQ等类似的组件。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答