创建一个可以同时拥有索引和键的数组的最佳方法是什么?
我的意思是这样的
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中做这样的事情最好的方法是什么?
答案 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