我有一個對象,它獲取以此順序添加的屬性。在Flash中循環顯示對象屬性
Home
School
living
status
sound
Memory
當我通過對象循環時,它們不會以該順序出現。我如何讓他們按照這個順序出來。
數據對象
for (var i:String in data)
{
trace(i + ": " + data[i]);
}
有沒有一種辦法也許排序呢?
我有一個對象,它獲取以此順序添加的屬性。在Flash中循環顯示對象屬性
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);
}
馬蒂共享解釋所發生的事情非常好,他的回答是太出色的鏈接。
如果訂單很重要,您可能會考慮的另一種解決方案是使用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
LOL赫克託矢量。 – Marty
http://stackoverflow.com/questions/10083064/whats-happening-when-i-use-fori-in-object-in-as3 – Marty