2014-12-27 118 views
0

我有一個其中有Class實例的數組。 這些類實例有幾個屬性。 假設我想按每個實例的name屬性對這個數組進行排序。Actionscript 3.0 - 通過屬性對實例數組進行排序?

public class Thing 
{ 

    public var name:String; 

    public function Thing(name:String) 
    { 
     this.name = name; 
    } 
} 

這裏是陣列可能是什麼樣子:

var ar:Array = new Array(new Thing("Apple"), new Thing("Compass"), 
         new Thing("Banana"), new Thing("Alligator")); 

排序,並通過它循環跟蹤每個實例的名稱屬性後,它應該是這樣的輸出: 鱷魚,蘋果,香蕉北斗

回答

0

sortOn或許應該工作,或者你可以通過它通過自己的自定義排序函數:

ar.sort(_sortArray); 

private function _sortArray(a:Thing, b:Thing):int 
{ 
    if (a.name < b.name) 
     return -1; // a goes before b 
    else if (a.name > b.name) 
     return 1; // b goes before a 
    return 0; // order doesn't matter 
} 

您可以然後通過調用它個

排序功能採取存儲在數組中的類型的兩個參數(在你的情況下,Thing),並返回任一< = -1如果ab之前應該去,> = 1如果ba,或0如果之前應該去順序無關緊要(即名字是一樣的)。你可以比較幾乎任何東西來得到你想要的排序。例如,得到一個隨機排序:

private function _sortArray(a:Thing, b:Thing):int 
{ 
    if (Math.random() < 0.5) 
     return -1; 
    return 1; 
} 
相關問題