我試圖做一些類似於數組的東西。創建一個類似於數組的對象或者擴展數組原型
我需要能夠「釋放」索引(將其值設置爲未定義),但我不想丟失索引。 無論何時將新項目放入數組中,都應該重新使用「已發佈」索引。
我希望能夠做這樣的事情:
example = new MyArray();
a = example.leaseIndex(); // returns 0
example[a] = "example value";
b = example.leaseIndex(); // returns 1
example[b] = "another value";
example.releaseIndex(0);
c = example.leaseIndex(); // returns 0
example[c] = "yet another value";
在我的例子leaseIndex找到可用的索引,如果沒有可用的推新的項目到陣列,並返回該項目的索引。
我想這樣做,以便數組不會隨着時間的推移不必要地變大。 我無法刪除「已發佈」項目,因爲數組中的每個項目都包含對同一陣列中另一項目的引用。
我已經在函數和數組之外做了小小的成功,以跟蹤可用的索引並分配和釋放它們,但理想情況下我希望函數成爲主數組的一部分。
我需要將我的函數添加到數組(或其原型)還是有另一種方式?因爲並非所有的數組都需要這個功能。
希望這是有道理的:/
更新
我試圖存儲佈線織機的佈局,這基本上是一個網絡圖(點和信息的點是如何連接)。
圖爲織機示例。它有3個連接器; 2行紅色(0),3行黃色(1)和2行綠色(2)。 一對紅色連接線的拼接(允許多條線路連接到單行線,藍色方塊)
這是怎麼說織機將被保存。
loom = {
points = [
{ self: 0, list: [ 2 ] },
{ self: 1, list: [ 7 ] },
{ self: 2, list: [ 0 ] },
{ self: 3, list: [ 7 ] },
{ self: 4, list: [ 6 ] },
{ self: 5, list: [ 7 ] },
{ self: 6, list: [ 4 ] },
{ self: 7, owner: 1, list: [ 1, 3, 5 ] }
],
connectors = [
[ 0, 1 ],
[ 2, 3, 4 ],
[ 5, 6 ]
]
}
連接器數組中的元素包含points數組中的點索引。 每個點對象中的列表數組包含其目標的索引,它們也是點。
我試圖做的功能,以幫助管理索引更容易,只是想知道是否有一種方法來擴展數組,或做出類似的功能合併。使用靜態函數是可以的,這是我一直在使用的。我只想看看我是否可以擴展數組,或者使用類似的東西,所以我不需要使用靜態函數。
元素添加到數組後,元素是否必須保持索引?如果你想刪除一個元素,'array.splice'會做到這一點,重新索引數組並重新計算長度,所以你永遠不會有空插槽,你可以簡單地追加到最後。 –
是的,元素確實需要保持它們的索引,因爲每個元素的值都是一個包含其內部數組的對象,其中包含其他元素的索引。我會在我的問題中添加一些額外的東西,以便使它更清晰一些。 – NickSlash