【问题标题】:actionscript array with index and key带有索引和键的动作脚本数组
【发布时间】:2010-06-27 12:58:36
【问题描述】:

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

我的意思是这样的

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

我知道我可以创建一个普通的数组/向量,然后使用对象/字典将键映射到当前数组中的索引。

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

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

item = list["myItem"]

但你也应该能够找出一个项目的索引,它们必须是 ordened ,并且应该可以像普通数组一样循环遍历它。

在 as3 中执行此类操作的最佳方法是什么?

【问题讨论】:

  • 你想达到什么目的?这看起来可以从不同的方法中受益。
  • 现在我正在尝试将它用于需要预加载的资产的排队列表。我希望资产按索引排序,但也有一个键,所以我希望 list["myItem"] 与 list[0] 相同,并且 list[1] 与 list["anotherItem" 相同]等
  • 在加载资产后,我仍然希望它们被索引以知道哪些是首先加载完成的,但也可以通过其键进行搜索。我知道有几种方法可以实现这一点,只是想知道是否有一种标准方法可以使用也有键的有序数组-> index|key|value

标签: actionscript-3 arrays collections map


【解决方案1】:

您说您不想为键设置反向索引,所以除了拥有一个在数组中进行线性搜索并找到一个项目的函数之外,我看不出您如何实现您所追求的目标给定一个 id。

这假设您的项目有一个值,但也有一个 id:{value:"someValue, id="myItem"}

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

现在,如果您想一路走下去,您可以通过扩展 Proxy 类来扩展 Array 功能,以使索引/id 访问透明(即,您的代码将获取带有queue[0]queue['myItem'] 的项目)。如果您有反向索引,您仍然需要在内部同步项目,或者您可以动态地查找它们(使用线性搜索)。

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

【讨论】:

  • 是的,这实际上就是我现在正在做的,一个扩展代理类的类,它保持一个反向索引。我只是想知道是否没有更好的方法来做到这一点。我想不是... ;) 谢谢你的回答!
猜你喜欢
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 2021-09-19
  • 1970-01-01
  • 2016-04-01
  • 2016-08-25
相关资源
最近更新 更多