我有一个应用程序,允许用户通过简单地定义每个元素上的索引(元素是在运行时加载的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
。
我已经尝试过这么多方法,我的大脑受伤。我迷失在所有这些递归函数中,甚至不起作用。 如果有人知道执行这种重新排序的工作方式,那将非常棒。