在ActionScript字典中获取密钥

在ActionScript字典中获取密钥,actionscript,dictionary,key,Actionscript,Dictionary,Key,我使用ActionScript中的字典作为队列,在某种程度上,大部分时间仍然作为关联容器读取,但我需要一次循环来遍历整个字典,例如for(var key:String in queue)。在这个for循环中,我对一个元素执行一些操作,然后对该键调用delete 我的问题是,在获取此队列中的下一个元素之前,我想等待一个事件。基本上我的for循环运行得太快了。我想一直获取下一个密钥,但我知道没有内置方法 我认为一个解决方案是在循环中添加一个中断,例如。。in将自动获取下一个键,但它将是一个始终执行一

我使用ActionScript中的字典作为队列,在某种程度上,大部分时间仍然作为关联容器读取,但我需要一次循环来遍历整个字典,例如for(var key:String in queue)。在这个for循环中,我对一个元素执行一些操作,然后对该键调用delete

我的问题是,在获取此队列中的下一个元素之前,我想等待一个事件。基本上我的for循环运行得太快了。我想一直获取下一个密钥,但我知道没有内置方法

我认为一个解决方案是在循环中添加一个中断,例如。。in将自动获取下一个键,但它将是一个始终执行一次的循环,只是为了获取下一个键。这听起来有点违反直觉

我希望我的问题是有道理的,我真的在寻找一些比我目前拥有的更好的想法。谢谢你的帮助


鲁迪

哈哈,这的确是一个有趣的问题。除了您概述的方法之外,似乎没有任何方法可以从字典中检索键列表。另一种方法是在第一次运行时缓存密钥列表,但这可能会失去同步,而且非常不整洁


我想我的主要问题是,为什么你不能用列表做你想做的事?如果您需要2个值(例如字符串),那么只需列出对象:)

为了简化,我需要遍历字典。到目前为止,我使用的是…中的,但问题是我需要等待EventListener中的事件发生,然后再处理第二个元素。问题是如何获得“下一个键”,类似于中的,但不使用中的?谢谢,谢谢你的回答。我存储了一个引用对象的ID。大多数情况下,我传入一个ID,然后查找对象(因此我实际上将其用作关联容器)。但有时我需要迭代,所以它实际上变成了一个队列/数组,并且必须按照元素的顺序。为了增加复杂性,这些键当然是唯一的,它们从0开始递增整数,但其中一些条目可能已被删除。我们可以有一个键为“0”、“10”、“11”等的元素。。。这可能会降低我使用整数进行迭代的速度。因此,为了简单起见,键是一个唯一的整数值,用于查找对象,但也是对象的一部分。我希望这能解释为什么我不使用列表。我明白了。如果确实需要,您也可以随时维护ID列表。否则我认为你是对的,你需要做一个for…,其中只使用了一次:)我想知道字典内部如何知道第一个元素是什么。必须有某种参考,以便。。。在中国,我们可以工作。如果我有这个参考,我的问题就解决了。是的,可能是某种内部hashmap,因为actionscript中的对象本质上是动态的。没错,如果您可以访问该阵列,它将解决您的问题:)
var lInfo:Object = ObjectUtil.getClassInfo(lDict);
                    
for each(var lProperty:String in lInfo.properties)
{
    var lItem:* = lDict[lProperty];
}