我想知道for-each和for-in循环中AS3中的Array,Dictionary和Object类型的迭代顺序.还有哪些因素可以改变这些循环类型组合的迭代顺序?
例如,我假设在Array类型上使用for-each总是从第一个元素移动到最后一个元素.For-each不能在Dictionary上使用,那么如何使用for-in循环确定顺序?
正如Colin Moock在Essential Actionscript 3.0中所述,除非枚举XML或XMLList对象,否则无法保证每个in循环的顺序;
点击这里查看Colin Moock的书中的话.
有作为讨论解决方法在这里,但说实话,如果你需要保证顺序,然后只需使用一个普通的旧的循环,并有它遍历(长度,numChildren的,等等)的次数.
你的意思是for (x in y)
每个循环的类型?AS3规范说for for"具有与ECMA-262 edition 3和E4X中定义的相同的语法和语义".
ECMA-262第12.6.4节规定"枚举的顺序是由对象定义的" - 换句话说,它取决于你是在迭代列表,字典,数组等.
我希望大多数集合的文档将明确说明枚举顺序(或者未定义顺序),但我没有检查过......
编辑:不幸的是,规范声明"枚举属性[...]的机制是依赖于实现的." 我在Array文档中看不到任何指定顺序的内容.说实话,这有点令人不满意:(