包 | 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 | ||
对指定的数组(不是副本)应用当前排序。 | 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 | 属性 |
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 — 包含要执行的查找类型的字符串。有效值为:
| |||||||
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 | () | 方法 |
Tue Jun 12 2018, 11:04 AM Z