用于 Adobe® Flash® Platform 的 ActionScript® 3.0 参考
主页  |  隐藏包列表和类列表 |   |   |  新增内容  |  索引  |  附录  |  为什么显示为英语?
过滤条件: 正在从服务器检索数据...
正在从服务器检索数据...
mx.collections 

ISort  - AS3 Flex

mx.collections
接口public interface ISort
实现器 Sort, Sort

语言版本: ActionScript 3.0
产品版本: Flex 4.5
运行时版本: Flash Player 9, AIR 1.1

ISort 接口定义类的接口,以提供对集合视图中的数据进行排序所需要的排序信息。

相关 API 元素



公共属性
 属性由以下参数定义
  compareFunction : Function
用于在排序时比较项目的方法。
ISort
  fields : Array
指定要比较的字段的 ISortField 对象 Array。
ISort
  unique : Boolean
指示排序是否应是唯一的。
ISort
公共方法
 方法由以下参数定义
  
findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
查找指定的数组内的指定对象(或插入点 — 如有要求)。如果找到,则返回其索引;如果未找到,则返回 -1。
ISort
  
返回表明指定的属性是否用于控制排序的布尔值。
ISort
  
检查 fields 数组,对数组中每个 ISortField 对象调用 reverse()。
ISort
  
sort(items:Array):void
对指定的数组(不是副本)应用当前排序。
ISort
属性详细信息

compareFunction

属性
compareFunction:Function

语言版本: ActionScript 3.0
产品版本: Flex 4.5
运行时版本: Flash Player 9, AIR 1.1

用于在排序时比较项目的方法。如果指定了此属性,Flex 会忽略在此类中使用的 ISortField 对象中指定的所有 compareFunction 属性。

该比较函数必须具有以下签名:


     
         function [name](a:Object, b:Object, fields:Array = null):int
     
      

此函数必须返回以下值:

  • -1,如果在已排序序列中 Object a 应显示在 Object b 之前。
  • 0,如果 Object a 等于 Object b
  • 1,如果在已排序序列中 Object a 应显示在 Object b 之后。

要返回到内部比较函数,请将此值设置为 null

fields 数组会指定要比较的对象字段。通常,算法将一直比较属性,直到用尽字段列表或能返回非零值。例如:


        function myCompare(a:Object, b:Object, fields:Array = null):int
        {
            var result:int = 0;
            var i:int = 0;
            var propList:Array = fields ? fields : internalPropList;
            var len:int = propList.length;
            var propName:String;
            while (result == 0 && (i < len))
            {
                propName = propList[i];
                result = compareValues(a[propName], b[propName]);
                i++;
            }
            return result;
        }
     
        function compareValues(a:Object, b:Object):int
        {
            if (a == null && b == null)
                return 0;
     
            if (a == null)
              return 1;
     
            if (b == null)
               return -1;
     
            if (a < b)
                return -1;
     
            if (a > b)
                return 1;
     
            return 0;
        }
      

默认值为可以按升序或降序执行字符串、数字或日期比较的内部比较函数。仅在需要自定义比较算法时指定您自己的函数。这种情况通常仅当在显示中使用计算的字段时出现。

或者,您可以通过使用 ISortField 类的 compareFunction 属性分别为每个排序字段指定比较函数;这样,您可以对一些字段使用默认比较,而对其它字段使用自定义比较。



实现
    public function get compareFunction():Function
    public function set compareFunction(value:Function):void

fields

属性 
fields:Array

语言版本: ActionScript 3.0
产品版本: Flex 4.5
运行时版本: Flash Player 9, AIR 1.1

指定要比较的字段的 ISortField 对象的 Array。在进行排序时,数组中 ISortField 对象的顺序确定字段的优先级顺序。默认排序比较运算符会一直检查数组顺序中的排序字段,直到确定了两个要比较的字段的排序顺序。

默认值为 null。



实现
    public function get fields():Array
    public function set fields(value:Array):void

相关 API 元素

unique

属性 
unique:Boolean

语言版本: ActionScript 3.0
产品版本: Flex 4.5
运行时版本: Flash Player 9, AIR 1.1

指示排序是否应是唯一的。如果字段属性中列出的字段指定的任何值或组合值导致不确定或非唯一的排序顺序,则唯一排序会失败;也就是说,在两个或多个项目具有相同排序字段值时会出现此情况。如果排序不唯一,将引发错误。仅当显式指定排序字段时,排序逻辑才使用该 unique 属性值。如果未显式指定排序字段,则具有相同值元素时也不会引发错误。

默认值为 false。



实现
    public function get unique():Boolean
    public function set unique(value:Boolean):void
方法详细信息

findItem

()方法
public function findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int

语言版本: ActionScript 3.0
产品版本: Flex 4.5
运行时版本: Flash Player 9, AIR 1.1

查找指定的数组内的指定对象(或插入点 — 如有要求)。如果找到,则返回其索引;如果未找到,则返回 -1。ListCollectionView 类的 findxxx() 方法使用此方法查找所需项目;一般来说,与 findItem() 相比,使用这些函数更易于在基于 ListCollectionView 的对象中查找数据。您可以在写入支持排序的类(如新的 ICollectionView 实现)时直接调用 findItem() 方法。调用该函数前需要对输入项数组进行排序。否则该函数无法正确找到指定值。

参数

items:Array — 要在其中进行搜索的 Array。
 
values:Object — 包含要查找的属性(或要查找的对象本身)的对象。此对象必须包含字段名/值对,其中的字段名是 fields 属性指定的字段的名称,其顺序与在此属性中使用的顺序相同。您不必指定 fields 属性中的所有字段,但不得在顺序中跳跃指定。因此,如果 fields 属性列出了三个字段,则可以指定此参数中的第一个和第二个字段,但不能仅指定第一个和第三个字段。
 
mode:String — 包含要执行的查找类型的字符串。有效值为:
ANY_INDEX_MODE返回对这些值有效的任何位置。
FIRST_INDEX_MODE返回这些值第一次出现的位置。
LAST_INDEX_MODE返回指定的值最后一次出现的位置。
 
returnInsertionIndex:Boolean (default = false) — 如果该方法找不到由 values 参数标识的项目,并且此参数为 true,则 findItem() 方法将返回这些值的插入点,也就是排序顺序中应插入此项目的点。
 
compareFunction:Function (default = null) — 用于查找该项目的比较运算符函数。如果没有指定此参数,或提供了 null 值,则 findItem() 函数使用由 ISort 实例的 compareFunction 属性确定的比较函数,传入由值对象和当前 SortFields 确定的字段数组。如果您提供了非 null 值,则 findItem() 函数将其用作比较函数。作为 compareFunction 传递的函数签名必须如下所示:function myCompareFunction(a:Object, b:Object):int。请注意,没有与 ISort.compareFunction() 属性的比较函数不同的第三个参数。

返回
int — int,找到的项目在数组中的索引。如果 returnInsertionIndex 参数为 false 并且找不到项目,则返回 -1。如果 returnInsertionIndex 参数为 true 并且找不到项目,则返回已排序数组中将插入这些值的点的索引。

引发
Error — 如果没有任何参数错误,则查找条件与排序不兼容,或无法确定排序的比较运算符函数。

propertyAffectsSort

()方法 
public function propertyAffectsSort(property:String):Boolean

语言版本: ActionScript 3.0
产品版本: Flex 4.5
运行时版本: Flash Player 9, AIR 1.1

返回表明指定的属性是否用于控制排序的布尔值。如果排序使用自定义比较运算符,则函数无法确定确切的答案;在这种情况下,始终返回 true

参数

property:String — 要测试的字段的名称。

返回
Boolean — 该属性值是否会影响排序结果。如果排序使用默认的 compareFunction,并且 property 参数指定了排序字段,则返回 true。如果排序或任何 ISortField 使用自定义比较运算符,则无法进行判断,因此返回 true

reverse

()方法 
public function reverse():void

语言版本: ActionScript 3.0
产品版本: Flex 4.5
运行时版本: Flash Player 9, AIR 1.1

检查 fields 数组,对数组中每个 ISortField 对象调用 reverse()。如果该字段原来为降序排序,则现在它将按升序排序,反之亦然。

注意:修改 fields 数组中的对象时不会自动更新 ICollectionView;而调用 refresh() 方法可更新此视图。

sort

()方法 
public function sort(items:Array):void

语言版本: ActionScript 3.0
产品版本: Flex 4.5
运行时版本: Flash Player 9, AIR 1.1

对指定的数组(不是副本)应用当前排序。要防止修改数组,请创建一个副本并在 items 参数中使用该副本。

Flex ICollectionView 实现自动调用 sort 方法并确保对基础数据的副本执行排序。

参数

items:Array — 要排序的项目的数组。





[ X ]为什么显示为英语?
《ActionScript 3.0 参考》中的内容以英语显示

《ActionScript 3.0 参考》中的部分内容未翻译成所有语言。当某个语言元素未翻译时,将显示为英语。例如,ga.controls.HelpBox 类未翻译成任何语言。因此在简体中文版的参考中,ga.controls.HelpBox 类显示为英语。