各大互联网公司2014前端笔试面试题–JavaScript篇(求解)

22.有这样一个URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如{a:’1′, b:’2′, c:”, d:’xxx’, e:undefined}。

答案:

1 function serilizeUrl(url) {

2     var result = {};

3     url = url.split("?")[1];

4     var map = url.split("&");

5     for(var i = 0, len = map.length; i < len; i++) {

6         result[map[i].split("=")[0]] = map[i].split("=")[1];

7     }

8     return result;

9 }


慕容708150
浏览 1088回答 2
2回答

ibeautiful

先通过分割'?'找到参数名和参数值部分:url&nbsp;=&nbsp;url.split("?")[1];又通过:var&nbsp;map&nbsp;=&nbsp;url.split("&");将每个键值对分割开,形成数组,放入循环:for(var&nbsp;i&nbsp;=&nbsp;0,&nbsp;len&nbsp;=&nbsp;map.length;&nbsp;i&nbsp;<&nbsp;len;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;result[map[i].split("=")[0]]&nbsp;=&nbsp;map[i].split("=")[1]; }在循环中,将键值数组的第一位当键,第二位当值,存入对象中:Object {a: "1"}Object {a: "1", b: "2"}Object {a: "1", b: "2", c: ""}Object {a: "1", b: "2", c: "", d: "xxx"}Object {a: "1", b: "2", c: "", d: "xxx", e: undefined}最后返回。
打开App,查看更多内容
随时随地看视频慕课网APP