为了账号安全,请及时绑定邮箱和手机立即绑定

有关放入数组元素问题

有关放入数组元素问题

呼如林 2018-12-06 23:02:01
题目:请编写一个JavaScript函数 parseQueryString,它的用途是把URL参数解析为一个对象,如:var url = ”http://www.taobao.com/index.php?key0=0&key1=1& key2=2…..” var obj = parseQueryString(url); alert(obj.key0) // 输出0 1 var url="http://www.taobao.com/index.php?key0=0&key1=1&key2=2"; 2 function parseQueryString(url){ 3 var str=url.split("?")[1]; 4 var items=str.split("&"); 5 var result={}; 6 var arr=[]; 7 for(var i=0; i<items.length; i++){ 8 arr=items[i].split('='); 9 result[arr[0]]=arr[1];//这句不明白? 10 } 11 return result; 12 } 13 var obj=parseQueryString(url); 14 alert(obj.key1); 这里不明白的是:result[arr[0]]=arr[1];在for循环结束后,按理说应该是key2=2将之前的key1=1和key0=0,覆盖了的呀?为什么最后alert(obj.key1)时仍旧能打印出来key1的值呢????
查看完整描述

6 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

result是个对象

第一次循环

result[arr[0]]=arr[1];等价于result["key0"]=0;

第二次循环

result[arr[0]]=arr[1];等价于result["key1"]=1;

查看完整回答
反对 回复 2018-12-24
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

其实for循环内部是这样的:

result.key0 = 0;

result.key1 = 1;

result.key2 = 2;

这样写你还会觉得后面的把前面的覆盖掉吗?属性名称不一样,不会覆盖的。

查看完整回答
反对 回复 2018-12-24
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

就和map与哈希的差不多,就是键指对的形式

查看完整回答
反对 回复 2018-12-24
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

@小猪冒泡: 他每次都arr=items[i].split('=')重新赋值了,其实result与arr是不同的数据类型,arr是数组类型,result保存的是KEY,与value,key是不允许相同的,value是允许相同的,所以result是一个集合类型的,相当与add操作

查看完整回答
反对 回复 2018-12-24
  • 6 回答
  • 0 关注
  • 502 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信