Справочник по ActionScript® 3.0 для платформы Adobe® Flash®
Домашняя страница  |  Скрыть список пакетов и классов |  Пакеты  |  Классы  |  Что нового  |  Указатель  |  Приложения  |  Почему по-английски?
Фильтры: AIR 30.0 или более ранней версии, Flash Player 30.0 или более ранней версии, Flash Lite 4
Flex 4.6 или более ранней версии, Flash Pro CS6 или более ранней версии
Скрыть фильтры
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, указывающий поля для сравнения.
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
  
sort(items:Array):void
Применяет текущую сортировку к указанному массиву (не копии).
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 — Строка, содержащая тип нахождения для выполнения. Допустимые значения:
ANY_INDEX_MODEВозвращает любую позицию, которая является допустимой для этих значений.
FIRST_INDEX_MODEВозвращает позицию, где найдено первое вхождение значений.
LAST_INDEX_MODEВозвращает позицию, где произошло последнее вхождение указанных значений.
 
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 — Массив сортируемых элементов.





[ X ]Почему по-английски?
Содержимое Справочника ActionScript 3.0 отображается на английском языке

Не все части Справочника ActionScript 3.0 переводятся на все языки. Если какой-то текстовый элемент не переведен, он отображается на английском языке. Например, компонент ga.controls.HelpBox не переведен ни на один из языков. Это значит, что в русской версии справки компонент ga.controls.HelpBox будет отображаться на английском языке.