Adobe® Flash® Platform 用 ActionScript® 3.0 リファレンスガイド
ホーム  |  パッケージおよびクラスリストの非表示 |  パッケージ  |  クラス  |  新機能  |  索引  |  付録  |  英語で表示される理由
フィルター: サーバーからデータを取得しています...
サーバーからデータを取得しています...
mx.collections 

Sort  - AS3 Flex

パッケージmx.collections
クラスpublic class Sort
継承Sort Inheritance EventDispatcher Inheritance Object
実装 ISort

言語バージョン: ActionScript 3.0
製品バージョン: Flex 3
ランタイムバージョン: Flash Player 9, AIR 1.1


Flex 4.5 以降では、このクラスの代わりとして spark.collections.Sort クラスを使用することをお勧めします。

既存のビューに対してソートを設定するために必要なソート情報を提供します(ICollectionView インターフェイスまたはこのインターフェイスを実装するクラス)。 ビューの sort プロパティにソートインスタンスを割り当てた後で、ビューの refresh() メソッドを呼び出してソート条件を適用します。 ソートの定義は通常、複雑なアイテムのコレクション、つまりコレクション内のオブジェクトのプロパティに対してソートが実行されるようなコレクションに対して行います。 次に、この用例を示します。

     var col:ICollectionView = new ArrayCollection();
     // In the real world, the collection would have more than one item.
     col.addItem({first:"Anders", last:"Dickerson"});
     // Create the Sort instance.
     var sort:Sort = new Sort();
     // Set the sort field; sort on the last name first, first name second.
     // Both fields are case-insensitive.
     sort.fields = [new SortField("last",true), new SortField("first",true)];
       // Assign the Sort object to the view.
     col.sort = sort;
     // Apply the sort to the collection.
     col.refresh();
  

コレクションに StringDateBoolean などの単純なアイテムが含まれている場合があります。この場合、これら単純型に直接ソートを行います。 単純なアイテムにソートを設定するときは、単一のソートフィールドを使用し、SortField オブジェクトコンストラクターに null name(第 1)パラメーターを指定します。 次に実際の使用例を示します。


     var col:ICollectionView = new ArrayCollection();
     col.addItem("California");
     col.addItem("Arizona");
     var sort:Sort = new Sort();
     // There is only one sort field, so use a null 
     // first parameter.
     sort.fields = [new SortField(null, true)];
     col.sort = sort;
     col.refresh();
  

ICollectionView インターフェイスの実装では、ソートを実行する前に、リモートの場所からすべてのアイテムを取得します。 ソートされたリストにページングを使用している場合は、データを取得する前にリモートコレクションにソートを適用します。

デフォルトでは、この Sort クラスは、言語固有の文字列を正しくソートしません。 このタイプのソートについては、spark.collections.Sort クラスおよび spark.collections.SortField クラスを参照してください。

MXML シンタックスexpandedMXML シンタックスを隠す

The <mx:Sort> tag has the following attributes:

  <mx:Sort
  Properties
  compareFunction="Internal compare function"
  fields="null"
  unique="false | true"
  />
  

In case items have inconsistent data types or items have complex data types, the use of the default built-in compare functions is not recommended. Inconsistent sorting results may occur in such cases. To avoid such problem, provide a custom compare function and/or make the item types consistent.

Just like any other AdvancedStyleClient-based classes, the Sort and SortField classes do not have a parent-child relationship in terms of event handling. Locale changes in a Sort instance are not dispatched to its SortField instances automatically. The only exceptional case is the internal default SortField instance used when no explicit fields are provided. In this case, the internal default SortField instance follows the locale style that the owner Sort instance has.

デフォルトの MXML プロパティfields

関連する API エレメント



パブリックプロパティ
 プロパティ定義元
  compareFunction : Function
ソート時にアイテムを比較するために使用するメソッドです。
Sort
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。
Object
  fields : Array
比較するフィールドを指定する ISortField オブジェクトの配列です。
Sort
  unique : Boolean
ソートが一意であるかどうかを示します。
Sort
パブリックメソッド
 メソッド定義元
  
コンストラクターです。
Sort
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
 Inherited
イベントをイベントフローに送出します。
EventDispatcher
  
findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
指定された配列内(要求された場合は挿入ポイント)で指定されたオブジェクトを検索し、見つかった場合はインデックス、見つからなかった場合は -1 を返します。
Sort
 Inherited
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
  
指定されたプロパティを使用してソートを制御するかどうかを返します。
Sort
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
  
fields 配列を通過して、配列内の ISortField オブジェクトごとに reverse() を呼び出します。
Sort
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  
sort(items:Array):void
指定された配列(配列のコピーではない)に現在のソートを適用します。
Sort
 Inherited
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
 Inherited
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント 概要 定義元
 Inherited[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。EventDispatcher
 Inherited[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。EventDispatcher
パブリック定数
 定数定義元
  ANY_INDEX_MODE : String = "any"
[静的] 検索を実行すると、一致するアイテムのインデックスを返します。
Sort
  FIRST_INDEX_MODE : String = "first"
[静的] 検索を実行すると、最初に一致したアイテムのインデックスを返します。
Sort
  LAST_INDEX_MODE : String = "last"
[静的] 検索を実行すると、最後に一致したアイテムのインデックスを返します。
Sort
プロパティの詳細

compareFunction

プロパティ
compareFunction:Function

言語バージョン: ActionScript 3.0
製品バージョン: Flex 3
ランタイムバージョン: Flash Player 9, AIR 1.1

ソート時にアイテムを比較するために使用するメソッドです。 このプロパティを指定すると、このクラスで使用する ISortField オブジェクトに指定した compareFunction プロパティはすべて無視されます。

比較関数には次のシグネチャが必要です。


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

この関数は、以下を返す必要があります。 value:

  • Object aObject b の前に現れるソート順の場合は -1
  • Object aObject b と等しい場合は 0
  • Object aObject b の後に表示されるソート順の場合は 1

内部比較関数に戻すには、この値を 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 3
ランタイムバージョン: Flash Player 9, AIR 1.1

比較するフィールドを指定する ISortField オブジェクトの配列です。配列内の ISortField オブジェクトの順序によって、ソート時のフィールドの優先順位が決まります。 デフォルトのソートコンパレータは、比較する 2 つのフィールドのソート順が決定するまで、配列順にソートフィールドをチェックします。

デフォルト値: null。

このプロパティはデータバインディングのソースとして使用できます。 このプロパティを変更すると、 fieldsChanged イベントが送出されます。



実装
    public function get fields():Array
    public function set fields(value:Array):void

関連する API エレメント

unique

プロパティ 
unique:Boolean

言語バージョン: ActionScript 3.0
製品バージョン: Flex 3
ランタイムバージョン: Flash Player 9, AIR 1.1

ソートが一意であるかどうかを示します。 フィールドプロパティのフィールドにより指定された値また組み合わせ値が不確定なソート順または一意ではないソート順になる場合、つまり複数のアイテムが同じソートフィールド値を持つ場合は、一意のソートは失敗します。ソートが一意でない場合は、エラーがスローされます。ソートロジックでこの unique プロパティ値が使用されるのは、ソートフィールドが明示的に指定されている場合のみです。ソートフィールドが明示的に指定されていない場合、同一値のエレメントがある場合でもエラーはスローされません。

デフォルト値: false。



実装
    public function get unique():Boolean
    public function set unique(value:Boolean):void
コンストラクターの詳細

Sort

()コンストラクター
public function Sort()

言語バージョン: ActionScript 3.0
製品バージョン: Flex 3
ランタイムバージョン: Flash Player 9, AIR 1.1

コンストラクターです。

フィールドを設定しない、カスタムコンパレータのない新しいソートを作成します。

メソッドの詳細

findItem

()メソッド
public function findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int

言語バージョン: ActionScript 3.0
製品バージョン: Flex 3
ランタイムバージョン: Flash Player 9, AIR 1.1

指定された配列内(要求された場合は挿入ポイント)で指定されたオブジェクトを検索し、見つかった場合はインデックス、見つからなかった場合は -1 を返します。 ListCollectionView クラスの findxxx() メソッドはこのメソッドを使用して、要求されたアイテムを検索します。基本的に、ListCollectionView ベースのオブジェクトからデータを検索する場合は、findItem() ではなく、これらの関数を使用するほうが簡単です。findItem() メソッドは、新しい ICollectionView 実装のような、ソートをサポートするクラスを記述する場合に直接呼び出します。この関数を呼び出す前に、入力アイテム配列をソートしておく必要があります。未ソートの場合、この関数は指定した値プロパティを正しく検索することができません。

パラメーター

items:Array — 検索する配列です。
 
values:Object — 検索するプロパティを含むオブジェクトです(または検索対象のオブジェクト自身)。 オブジェクトは、フィールド名と値のペアで作成します。フィールド名は fields プロパティで指定したフィールドの名前であり、このプロパティに指定したとおりの順序になります。 fields プロパティのすべてのフィールドを指定する必要はありませんが、順序を飛ばすことはできません。 したがって、fields プロパティに 3 つのフィールドが指定されている場合は、その 1 番目と 2 番目のフィールドをこのパラメーターに使用することはできますが、1 番目と 3 番目だけを指定することはできません。
 
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):intISort.compareFunction() プロパティの比較関数とは異なり、3 番目の引数はありません。

戻り値
int — int は、見つかったアイテムの配列内のインデックスです。 returnInsertionIndex パラメーターが false で、アイテムが見つからない場合は、-1 を返します。 returnInsertionIndex パラメーターが true で、アイテムが見つからない場合は、ソートされた配列内の値が挿入される位置のインデックスを返します。

propertyAffectsSort

()メソッド 
public function propertyAffectsSort(property:String):Boolean

言語バージョン: ActionScript 3.0
製品バージョン: Flex 3
ランタイムバージョン: Flash Player 9, AIR 1.1

指定されたプロパティを使用してソートを制御するかどうかを返します。 ソートにカスタムコンパレータが使用されると、この関数は決定的な結果を判断できません。この場合は、常に true を返します。

パラメーター

property:String — テストするフィールドの名前です。

戻り値
Boolean — プロパティ値がソート結果に影響を与えるかどうかを指定します。 ソートでデフォルトの compareFunction が使用される場合、true が返されるのは、property パラメーターがソートフィールドを指定する場合です。 ソートまたは ISortField でカスタムコンパレータが使用されると、確認する方法はないので、true を返します。

reverse

()メソッド 
public function reverse():void

言語バージョン: ActionScript 3.0
製品バージョン: Flex 3
ランタイムバージョン: Flash Player 9, AIR 1.1

fields 配列を通過して、配列内の ISortField オブジェクトごとに reverse() を呼び出します。フィールドが降順の場合は昇順になり、昇順の場合は降順になります。

メモ:ICollectionView は、fields 配列内のオブジェクトが変更されても自動的には更新されません。ビューを更新するには、refresh() メソッドを呼び出します。

sort

()メソッド 
public function sort(items:Array):void

言語バージョン: ActionScript 3.0
製品バージョン: Flex 3
ランタイムバージョン: Flash Player 9, AIR 1.1

指定された配列(配列のコピーではない)に現在のソートを適用します。 配列が変更されないようにするには、コピーを作成し、そのコピーを items パラメーターで使用します。

ICollectionView 実装は、sort メソッドを自動的に呼び出し、基になるデータのコピーに対してソートが行われるようにします。

パラメーター

items:Array — ソートするアイテムの配列です。

定数の詳細

ANY_INDEX_MODE

定数
public static const ANY_INDEX_MODE:String = "any"

言語バージョン: ActionScript 3.0
製品バージョン: Flex 3
ランタイムバージョン: Flash Player 9, AIR 1.1

検索を実行すると、一致するアイテムのインデックスを返します。

FIRST_INDEX_MODE

定数 
public static const FIRST_INDEX_MODE:String = "first"

言語バージョン: ActionScript 3.0
製品バージョン: Flex 3
ランタイムバージョン: Flash Player 9, AIR 1.1

検索を実行すると、最初に一致したアイテムのインデックスを返します。

LAST_INDEX_MODE

定数 
public static const LAST_INDEX_MODE:String = "last"

言語バージョン: ActionScript 3.0
製品バージョン: Flex 3
ランタイムバージョン: Flash Player 9, AIR 1.1

検索を実行すると、最後に一致したアイテムのインデックスを返します。





[ X ]英語で表示される理由
ActionScript 3.0 リファレンスガイドのコンテンツが英語で表示されます。

ActionScript 3.0 リファレンスガイドのすべての部分がすべての言語に翻訳されているわけではありません。言語エレメントが翻訳されていない場合、そのエレメントは英語で表示されます。例えば、ga.controls.HelpBox クラスはどの言語にも訳されていません。このため、リファレンスガイドの日本語バージョンでは、ga.controls.HelpBox クラスは英語で表示されます。