簡體   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