首页 新闻 会员 周边

搜狐JvaaScript面试题:实现一个URI解析方法,把url里#之后的参数解析成指定的数据结构。

0
悬赏园豆:10 [已解决问题] 解决于 2012-04-16 16:07
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、代码注释明确

草根程序猿的主页 草根程序猿 | 初学一级 | 园豆:129
提问于:2012-03-28 11:23
< >
分享
最佳答案
0
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;
//+++++++++++答题结束+++++++++++
}

写的不是很好

收获园豆:10
人 在 旅 途 | 菜鸟二级 |园豆:315 | 2012-03-28 16:15
其他回答(1)
0

参考下 jquery BBQ等类似的组件。

阿福 | 园豆:206 (菜鸟二级) | 2012-03-28 14:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册