[英]Why array.push() is used to make an object?
我正在阅读如何在 JavaScript 中获取查询字符串值? 在 Stackoverflow 上,第一个回复中的这段代码让我想知道为什么要这样使用“vars.push()”?
function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
但不是这个:
var vars=[];
...
vars.push(hash[0]);
vars[hash[0]] = hash[1];
我重写了如下代码:
var vars={};
...
vars[hash[0]] = hash[1];
它有效。 现在的问题是:
ARR.push(KEY)
然后再使用ARR[KEY]=VAL
格式? 这导致vars
既是键数组又是字典。
我能想到的唯一好的理由是保持查询参数的顺序,这在字典中没有定义。
无论哪种方式,我都会注意到这个 function 删除了重复的查询参数 - 它只保留最后一个值(尽管键会多次插入到数组中)
function 将数组用作数组和 object。
作为一个数组,它包含来自查询字符串的键。 作为 object,它包含根据查询字符串中的键命名的属性,并且这些属性具有来自查询字符串的值。
因此,如果查询字符串例如如下所示: a=1&b=2
,则该数组包含两项“a”和“b”,并且它具有两个属性a
的值为1
和b
的值为2
.
Push 会将键作为最后一个键进行推送。 所以它允许你在数组中有一个逻辑顺序。
push() 按顺序将其 arguments 附加到数组的末尾。 它直接修改数组,而不是创建一个新数组。 push() 及其配套方法 pop() 使用 arrays 提供先进后出堆栈的功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.