首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >For-Each循环AS3:方向有保证吗?

For-Each循环AS3:方向有保证吗?
EN

Stack Overflow用户
提问于 2009-03-06 14:07:58
回答 3查看 13.8K关注 0票数 13

我想知道AS3中for-each和for-in循环的数组、字典和对象类型的迭代顺序。另外,哪些因素可以改变这些循环类型组合的迭代顺序?

例如,我假设在Array类型上使用for-each总是从第一个元素移动到最后一个元素。For-each不能在字典上使用,那么如何使用for-in循环确定顺序呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-06 14:21:56

您是指for-each循环的for (x in y)类型吗?AS3规范说for循环“具有与ECMA-262version3和E4X中定义的相同的语法和语义”。

ECMA-262的第12.6.4节规定“枚举的顺序是由对象定义的”--换句话说,它将取决于您是否正在迭代列表、字典、数组等。

我希望大多数集合的文档会明确地说明枚举顺序(或者没有定义顺序),但我还没有检查过……

编辑:不幸的是,规范规定“枚举属性的机制……依赖于实现”。我在Array文档中看不到任何指定顺序的东西。老实说,这有点不尽如人意:

票数 5
EN

Stack Overflow用户

发布于 2009-03-07 00:34:17

正如Colin Moock在Essential ActionScript3.0中所述,除非枚举XML或XMLList对象,否则不能保证for each in循环的顺序;

Click here for Colin Moock's words from his book.

正如所讨论的那样,有一些变通方法,但老实说,如果你需要保证顺序,那么只需使用一个常规的旧here循环,并让它迭代(长度,numChildren等)。次数。

票数 8
EN

Stack Overflow用户

发布于 2009-03-06 16:27:00

在AS3.0的早期版本中,评估的顺序发生了变化,在AS1.0和2.0中,评估的顺序是基于添加对象的顺序。现在,在3.0中,所有循环都保持了数组顺序。试试下面的代码片段:

代码语言:javascript
运行
复制
var a:Array = new Array();
a[ 1 ] = 'first';
a[ 0 ] = 'second';

for (var key:String in a) 
    trace( key + ': ' + a[ key ] );

在AS3.0和AS1.0/2.0中尝试以上功能

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/618966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档