Пакет | 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, указывающий поля для сравнения. | ISort | ||
unique : Boolean
Указывает, должна ли сортировка быть уникальной. | ISort |
Метод | Определено | ||
---|---|---|---|
findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
Поиск указанного объекта в пределах указанного массива (или места вставки при запросе); при обнаружении возвращается индекс, в противном случае – -1. | ISort | ||
Возвращает значение, показывающее используется ли указанное свойство для управления сортировкой. | ISort | ||
Проходит через массив fields и вызывает reverse() для каждого объекта ISortField в массиве. | ISort | ||
Применяет текущую сортировку к указанному массиву (не копии). | ISort |
compareFunction | свойство |
compareFunction:Function
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 4.5 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Метод, используемый для сравнения элементов при сортировке. При указании этого свойства Flex игнорирует любые свойства compareFunction
, которые указаны в объектах ISortField
, используемых в этом классе.
Функция сравнения должна иметь следующую подпись:
function [name](a:Object, b:Object, fields:Array = null):int
Эта функция должна возвращать следующее значение:
- -1, если в отсортированной последовательности
объект А
должен предшествоватьобъекту B
. - 0, если
объект А
совпадает собъектом B
. - 1, если в отсортированной последовательности
объект А
должен следовать заобъектом 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
, указывающих поля для сравнения. Порядок объектов 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
. Метод findItem()
можно вызвать непосредственно при создании класса, например новой реализации ICollectionView
, который поддерживает сортировку. Перед вызовом этой функции необходимо выполнить сортировку входного массива элементов. В противном случае эта функция не сможет правильно определить указанное значение.
Параметры
items:Array — Массив, в пределах которого выполняется поиск.
| |||||||
values:Object — Объект, содержащий свойства для поиска (или сам объект для поиска). Объект должен состоять из пар «имя/значение поля», в которых имена полей определяются свойством fields в порядке их использования в этом свойстве. Необязательно перечислять все поля свойства fields , однако поле не может быть пропущено в последовательности. Поэтому если в свойстве fields перечисляются три поля, то можно указать только первое и второе поля, но нельзя указать первое и третье, пропустив второе.
| |||||||
mode:String — Строка, содержащая тип нахождения для выполнения. Допустимые значения:
| |||||||
returnInsertionIndex:Boolean (default = false ) — Если метод не находит элемент, идентифицируемый параметром values , и этот параметр равен true , метод findItem() возвращает место вставки для значений, которое в сортированной последовательности является точкой вставки элемента.
| |||||||
compareFunction:Function (default = null ) — функция устройства сравнения для использования при нахождении элемента. Если этот параметр не определен или указано значение null , функция findItem() использует функцию compare, определенную ISort в свойстве compareFunction экземпляра, с передачей данных в массив полей, которые определены объектом значений и текущим SortFields . Если указано ненулевое значение, функция findItem() использует его как функцию compare. Для функции, передаваемой как compareFunction , необходимо указать следующую подпись: function myCompareFunction(a:Object, b:Object):int . Обратите внимание, что в отличие от функции compare для свойства 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, установленная по умолчанию, метод возвращает значение true , если параметр property определяет поле сортировки. Если сортировка или любой ISortField использует неизвестное пользовательское устройство сравнения, возвращается значение true .
|
reverse | () | метод |
public function reverse():void
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 4.5 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Проходит через массив fields
и вызывает reverse()
для каждого объекта ISortField
в массиве. Поле по нисходящей теперь становится полем по восходящей и наоборот.
Примечание. ICollectionView
не обновляется автоматически при изменении объектов в массиве fields
; для обновления представления следует вызвать метод refresh()
.
sort | () | метод |
public function sort(items:Array):void
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 4.5 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Применяет текущую сортировку к указанному массиву (не копии). Для предотвращения изменения массива следует создать копию в параметре items
.
Реализации ICollectionView
в Flex автоматически вызывают метод sort
и обеспечивают выполнение сортировки в копии основных данных.
Параметры
items:Array — Массив сортируемых элементов.
|
Tue Jun 12 2018, 11:34 AM Z