簡體   English   中英

JavaScript是否填充空數組項?

[英]Does JavaScript populate empty array items?

我在JavaScript中編寫了大量的年度數據,我正在考慮將它添加到數組中,使用year作為數組索引並將數據放入數組中。 但是,Firebug似乎表明JavaScript通過用“undefined”填充數組中的兩千多個條目來處理這個問題。 有數百個這樣的陣列在活動內存中徘徊,我擔心數十萬個無用數組項的開銷可能會使程序開始變慢。 會嗎?

如果將數字索引的值設置為高於數組的當前length ,則會影響length屬性。

簡而言之,您應該使用Object

var data = {};
data[year] = "some data";

// or
var data = {
  2009: "2009 data",
  2010: "2010 data"
};

現在我回答問題標題:“ JavaScript是否填充空數組項?

不,正如我之前所說,只更改了length屬性(如果需要,只有當添加的索引大於當前length ), length才會增加到比該索引的數值多一個。

Array.prototype方法的工作原理是假設數組對象的索引從零開始。

以前的索引在Array對象中並不存在,您可以測試它:

var array = [];
array[10] = undefined;

array.hasOwnProperty(10); // true
array.hasOwnProperty(9);  // false

總之,數組意味着包含從零開始的順序索引,如果您的屬性不滿足這些要求,則應該只使用一個對象。

是的,最有可能的。 您應該考慮使用JavaScript對象:

var years = {2009: 'Good', 2010: 'Better'};

好吧,如果你迭代了數千個未定義的,它將影響整體程序速度,但不確定你是否會注意到它。

另一方面,有時稀疏數組比自定義對象更易於使用,並且數組具有可用的方便方法。

在日歷應用程序中,我從每年使用的對象開始,但每年由十二個成員(月數組)組成,每個'月'是一個稀疏的重要日期數組,其長度取決於該月的最高日期有任何數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM