2014-12-27 120 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; 
} 
相关问题