首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web开发 >

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

2013-07-27 
AS3中奇怪的问题 for in 数组/对象索引排序错乱的疑惑虽然接触过JS的foreach PHP的foreach asp的for each

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的问题应该发布于哪个板块? AS3 for?in 乱序 遍历数组 遍历对象
[解决办法]
是这样的,你不能依靠这种方法得到正确的顺序,请采用数组,参见
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)

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

热点排行