Actionscript 3 在flash中循环浏览对象属性

Actionscript 3 在flash中循环浏览对象属性,actionscript-3,flash,Actionscript 3,Flash,我有一个对象,它获取按此顺序添加的属性 Home School living status sound Memory 当我在对象中循环时,它们不会按顺序出现。我怎么才能让他们按这个顺序出来呢 数据就是对象 for (var i:String in data) { trace(i + ": " + data[i]); } 是否有办法对其排序?对您可以访问属性的顺序进行排序的唯一方法是手动。下面是我为您创建的一个函数: function getSortedPairs(object:Obj

我有一个对象,它获取按此顺序添加的属性

Home
School
living
status
sound
Memory
当我在对象中循环时,它们不会按顺序出现。我怎么才能让他们按这个顺序出来呢

数据就是对象

for (var i:String in data)
{
    trace(i + ": " + data[i]);
}

是否有办法对其排序?

对您可以访问属性的顺序进行排序的唯一方法是手动。下面是我为您创建的一个函数:

function getSortedPairs(object:Object):Array
{
    var sorted:Array = [];

    for(var i:String in object)
    {
        sorted.push({ key: i, value: object[i] });
    }

    sorted.sortOn("key");

    return sorted;
}
审判:

var test:Object = { a: 1, b: 2, c: 3, d: 4, e: 5 };
var sorted:Array = getSortedPairs(test);

for each(var i:Object in sorted)
{
    trace(i.key, i.value);
}

马蒂分享的链接很好地解释了正在发生的事情,他的回答也很好

另一个解决方案,如果顺序问题,你可以考虑使用<代码>向量< /> >

// Init the vector
var hectorTheVector:Vector.<String> = new Vector.<String>();

// Can add items by index
hectorTheVector[0] = "Home";
hectorTheVector[1] = "School";
hectorTheVector[2] = "living";

// Or add items by push
hectorTheVector.push("status");
hectorTheVector.push("sound");
hectorTheVector.push("Memory");

//See all items in order
for(var i:int = 0; i < hectorTheVector.length; i++){
    trace(hectorTheVector[i]);
}

/* Traces out:
Home
School
living
status
sound
Memory
*/
//初始化向量
向量:向量新向量();
//可以按索引添加项目
HectorHevector[0]=“主页”;
HectorHevector[1]=“学校”;
HectorHevector[2]=“居住”;
//或通过推送添加项目
HectorHevector.push(“状态”);
HectorthVector.push(“声音”);
HectorHevector.push(“内存”);
//按顺序查看所有项目
对于(变量i:int=0;i

一个
数组
也会保持秩序。这里有一个

我需要对属性键和值进行排序,而不仅仅是值。我该怎么做呢?但这只是对键或值进行排序,但排序后我需要能够访问键和值我知道发生了什么,但值和键仍然没有像最初添加到对象中的那样出现。生活、记忆、家庭、学校、状态、声音, title@Chapsterj除了手动存储该顺序之外,没有其他方法可以做到这一点,即填充“排序”数组,就像我按所需顺序逐行存储一样。