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