带有索引和键的actionscript数组

时间:2010-06-27 12:58:36

标签: actionscript-3 arrays collections map

创建一个可以同时拥有索引和键的数组的最佳方法是什么?

我的意思是这样的

index     | key           | value
0         | "myItem"      | "Some value"
1         | "anotherItem" | "Some other value"
2         | "blabla"      | "Bla Bla"

我知道我可以创建一个普通的Array / Vector,然后使用Object / Dictionary将键映射到当前数组中的索引。

但是如果数组发生更改,那么Dictionary需要更改所有受影响的索引,因为例如已删除了某个项目。 我可以继续创建一个尝试将地图与数组等同步的类...... 但我不认为这是最好的方式...... :)。

我想用它来制作一个列表...例如,它包含排队的项目。 您应该能够通过其键获得特定项目:

item = list["myItem"]

但是你也应该能够找到一个项目的索引,它们必须是ordened,并且应该可以将它作为普通数组循环。

在as3中做这样的事情最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

你说你不想为这些键设置一个反向索引,所以除了在数组中进行线性搜索并找到一个项目的功能外,我不知道你怎么能实现你的目标。给了一个id。

这假设您的商品具有值,但也包含ID:{value:"someValue, id="myItem"}

线性搜索无论如何都不是一个坏主意,除非您的队列中有批次项目并且经常通过id检索它们(特别是在紧密循环中)。

现在,如果您想要一直使用,可以通过扩展Proxy类来扩展Array功能,使索引/ id访问透明(也就是说,您的代码将获得queue[0]或{{1 }})。如果您有反向索引,您仍然必须在内部同步项目,或者您可以通过线性搜索查找它们(使用线性搜索)。

请查看此答案以获取有关如何执行此操作的指示:extending AS3's Array access operators to 'wrap' out-of-bound index values