欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

as3中奇怪的有关问题 for in 数组/对象索引排序错乱的疑惑

更新时间: 2014-01-05 00:49:31 责任编辑: Author_N1

 

AS3中奇怪的问题 for in 数组/对象索引排序错乱的疑惑
虽然接触过JS的foreach PHP的foreach asp的for each in 但从来没碰到过类似于AS3中如此纠结的用于遍历数组或对象元素的for in语句

一般如上提及的编程语言中,遍历对象一般是按对象索引添加的先后顺序进行遍历,例如对象
var a={"a":"123","b":"abs","c":"xxx"};
按索引遍历显示的顺序应该是
a = 123
b = abs
c = xxx
如此,但在AS3中却并非如此,而且也找不到相关规律,实属费解,代码如下 Main.as 在test.fla文件的发布选项中,类的输入框中填写Main,我用的是FLASH CS5.5

package{
    import flash.display.Sprite;
    public class Main extends Sprite{
        public function Main():void{
            var aa:Object = {"x123":"aaa","xxx":"34","bn":"yuyu","a23":"yu"};
    for(var x:Object in aa){
                trace(x+"->"+aa[x]);
            }
        }
    }
}

FLASH里面调试的结果如下
xxx->34
bn->yuyu
x123->aaa
a23->yu
就是不知道为什么第一个不是x123->aaa而是xxx->34 不清楚是怎么排序的
顺便问下 FLASH或者AS的问题应该发布于哪个板块?
--参考方法--
是这样的,你不能依靠这种方法得到正确的顺序,请采用数组,参见
http://stackoverflow.com/questions/2029909/as3-whats-determines-the-order-of-for-in
http://www.stevensacks.net/2008/04/07/as3-forin-object-does-not-behave-like-as2/
--参考方法--
对!对象索引顺序跟哈希表有关
使用哈希表的原因就是期望快速的定位到目标项(哈希表的时间复杂度为0)

不是道你为什么要对属性排列的顺序有这么大的兴趣
对象的属性是按名称访问的,与位置无关
数组才需要顾及位置,因为他是按位置标示含义的
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 00:49:31
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/159/
本文WWW.DOC100.NET DOC100.NET版权所有。