我有一个包含Class实例的Array。 这些类实例有几个属性。 假设我想通过每个实例的name属性对此数组进行排序。
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"));
对它进行排序并循环遍历它以跟踪每个实例的name属性后,它应该输出如下: 鳄鱼,苹果,香蕉,指南针
答案 0 :(得分:0)
您可以按
排序ar.sortOn(property,options);
在您的情况下,该物业将是" name"和选项ARRAY.ASCENDING
PS:我没试过,但试一试:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#sortOn()
答案 1 :(得分:0)
sortOn
应该可以正常工作,或者您可以通过自己的自定义排序函数传递它:
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
}
然后您可以通过以下方式调用它:
ar.sort( _sortArray );
排序函数采用存储在数组中的两个类型的参数(在您的情况下为Thing
),如果-1
应该在{{1}之前返回,则返回&lt; = a
}},&gt; = b
如果1
应该在b
之前,或a
如果订单不重要(即名称相同)。你可以比较几乎任何东西来获得你想要的排序。例如,获得随机排序:
0