繁体   English   中英

为什么用 array.push() 来做一个 object?

[英]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的值为1b的值为2 .

Push 会将键作为最后一个键进行推送。 所以它允许你在数组中有一个逻辑顺序。

push() 按顺序将其 arguments 附加到数组的末尾。 它直接修改数组,而不是创建一个新数组。 push() 及其配套方法 pop() 使用 arrays 提供先进后出堆栈的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM