我要刪除我的陣列的一些元素,但沒有重新排列。最佳方式,它
如果我使用「刪除」刪除我的元素,在「洞」佔用內存?
var array=["A","B","C"];
delete array[1]; // array -> ["A", undefined, "C"]
我想刪除的元素被真正刪除,因此不佔用內存空間,是不是真的?
我要刪除我的陣列的一些元素,但沒有重新排列。最佳方式,它
如果我使用「刪除」刪除我的元素,在「洞」佔用內存?
var array=["A","B","C"];
delete array[1]; // array -> ["A", undefined, "C"]
我想刪除的元素被真正刪除,因此不佔用內存空間,是不是真的?
完全取決於執行。在內部,所有JS表示將最終轉換爲稀疏表示,但備用表示傾向於每個元素使用更多內存,訪問速度比非稀疏數組慢。
出於這個原因,從密集陣列去除onevalue不大可能releas任何存儲器,但足夠的元素集合中被移除後,執行將有可能轉換成的稀疏表示,以總節省內存。
注:該指數在你刪除的對象或值將不會被立即刪除 - 刪除只是從對象中刪除的特性槽 - 對象/值只有GC通期間被移除,且僅當沒有其他參考。
您可以使用array.splice(1, 1);
它會在索引1中刪除一個條目中的第一個參數是指數,第二個是計數。
沒有REARRANGE它,所以拼接不是我所期待的。 – blow 2009-10-28 20:18:02