Actionscript 3.0 - 按其属性对实例数组进行排序?

时间:2014-12-27 12:16:31

标签: arrays class sorting actionscript instances

我有一个包含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属性后,它应该输出如下: 鳄鱼,苹果,香蕉,指南针

2 个答案:

答案 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