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}。
答案:
javascript
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 }
简单的分割完成之后,需要记得做解码处理,同时对于设置为空的也要做好判断。
先通过分割'?'找到参数名和参数值部分:
又通过:
将每个键值对分割开,形成数组,放入循环:
在循环中,将键值数组的第一位当键,第二位当值,存入对象中:
最后返回。
结合楼上各位的思路,写了一份总结
放在 github 上。
如果有什么不正确的地方,欢迎
pull request
:)