[英]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.