【发布时间】:2012-06-29 03:43:43
【问题描述】:
我有一个对象,它获取按此顺序添加的属性。
Home
School
living
status
sound
Memory
当我遍历对象时,它们不会按该顺序出现。我怎样才能让他们按这个顺序出来。
数据是对象
for (var i:String in data)
{
trace(i + ": " + data[i]);
}
有没有办法排序?
【问题讨论】:
标签: actionscript-3 flash
我有一个对象,它获取按此顺序添加的属性。
Home
School
living
status
sound
Memory
当我遍历对象时,它们不会按该顺序出现。我怎样才能让他们按这个顺序出来。
数据是对象
for (var i:String in data)
{
trace(i + ": " + data[i]);
}
有没有办法排序?
【问题讨论】:
标签: actionscript-3 flash
对您可以访问属性的顺序进行排序的唯一方法是手动。这是我为您创建的一个函数:
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);
}
【讨论】:
Marty 分享的链接很好地解释了正在发生的事情,他的回答也很好。
如果订单很重要,您还可以考虑使用Vector 的另一个解决方案。
// 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
*/
Array 也会保持秩序。这是good topic on sorting Arrays
【讨论】: