我有一個情況,我可以設置高折射率的一個陣列單元之前不將其設置的任何細胞。在JavaScript中如何將空單元存儲在稀疏數組中?
>>> var arr = [];
undefined
>>> arr[5] = 'value';
"filled"
>>> arr
[undefined, undefined, undefined, undefined, undefined, "filled"]
這樣的數組是如何存儲在內存中的?是否爲每個未定義的值分配了空間?
在我的實際項目中,我可以使用非常大的指標。例如,我可以設置單元格500-800和900-1000。我不能使用散列,因爲我需要遍歷這些非空單元並知道它們的索引。我想知道如果像這樣對數組進行分段將爲空單元耗盡大量內存。
我不知道我跟着,你爲什麼不能使用'{}'的情況?你仍然可以使用'for(i in obj)'循環遍歷所有的屬性。 – zzzzBov 2012-04-13 18:09:35
爲什麼你不能使用散列表?如果你知道最大的索引,你仍然可以使用'for'循環。元素位於散列表中,您可以檢索並處理它,或者它不是,然後轉到下一個循環迭代。 – 2012-04-13 18:10:09
如果爲每個值分配了空間,則var foo = []; foo [999999999] =「呃哦」;'會導致大量的內存分配。它不是,所以不是。的 – Phrogz 2012-04-13 18:13:57