我有一個應用程序,允許用戶通過簡單地定義每個元素上的索引(元素是在運行時加載的xml文件)來定義元素的順序。AS3插入數組重新排序
規則很簡單,索引越高,層堆棧中的元素越高(就像CSS中的z-index一樣)。 但是,如果在同一索引處有兩個元素,則必須在現有元素之後添加最後一個元素。而且,如果採用新的計算索引,我必須移動列表的內容來放置新項目。這是遞歸的。
這裏的結構是什麼樣子的樣本:
+---+--------------+
| 1 | lowest item |
+---+--------------+
| 2 | lower item |
+---+--------------+ <== if I add an element at the index 3, there is no problem
| 4 | higher item |
+---+--------------+
| 9 | highest item |
+---+--------------+
但是,如果該指數3已經被佔用,我剛纔之後插入新的項目,在指數4.如果在4已被使用過,我有現有的4移動到指數5放置新的項目,而這一點,遞歸....
+---+---------------+ +---+-------------------+
| 1 | item 1 | | 1 | item 1 |
+---+---------------+ +---+-------------------+
| 2 | item 2 | | 2 | item 2 |
+---+---------------+ +---+-------------------+
| 3 | already taken | ==> | 3 | already taken |
+---+---------------+ +---+-------------------+
| 4 | item 4 | | 4 | << NEW ITEM 3 >> |
+---+---------------+ +---+-------------------+
| 9 | item 5 | | 5 | previously item 4 |
+---+---------------+ +---+-------------------+
| 9 | item 5 |
+---+-------------------+
元素的數量可以改變,並且列表不總是開始索引1. 例如,列表可以包含索引:1, 2, 3, 5, 10
以及30, 32, 52, 9999
。
我已經嘗試過這麼多方法,我的大腦受傷。我迷失在所有這些遞歸函數中,甚至不起作用。 如果有人知道執行這種重新排序的工作方式,那將非常棒。