Flash Lite 2.x および 3.0 ヘルプ

sort (Array.sort メソッド)

public sort([compareFunction:Object], [options:Number]) : Array

配列内のエレメントをソートします。ソートは Unicode 値に基づいて実行されます(ASCII は Unicode のサブセットです)。

Array.sort() のデフォルトの動作は、次のようになります。

  • ソートでは大文字と小文字が区別されます。Za よりも先になります。
  • 昇順にソートされます。ab よりも先になります。
  • 配列はソート順を反映するように変更されます。同じソートフィールドを持つ複数のエレメントは、ソート済みの配列の中で連続的かつランダムに格納されます。
  • 数値フィールドは、ストリングとしてソートされます。たとえば、"1" は "9" よりも小さいストリング値であるため、100 は 99 よりも先になります。

デフォルト設定と異なる設定を使用して配列のソートを行う場合は、options パラメータのエントリで説明されているソートオプションのいずれかを使用することも、ソート処理を行う独自のカスタム関数を作成することもできます。カスタム関数を作成する場合は、最初のパラメータ (compareFunction) としてカスタム関数の名前を使用して、sort() メソッドを呼び出すことで作成できます。

パラメータ

compareFunction:Object (オプション) - 配列内のエレメントのソート順を決定する比較関数。エレメント A と B がある場合、compareFunction は次の 3 つの値のいずれかを返します。

  • A が B の前に表示されるソート順の場合は -1
  • A = B の場合は 0
  • A が B の後に表示されるソート順の場合は 1

options:Number (オプション) - デフォルトのソート動作を変更する数値または定義済み定数の名前。複数指定する場合は、ビット単位の論理和 (OR) | 演算子で区切ります。options パラメータには次の値を指定できます。

  • Array.CASEINSENSITIVE または 1
  • Array.DESCENDING または 2
  • Array.UNIQUESORT または 4
  • Array.RETURNINDEXEDARRAY または 8
  • Array.NUMERIC または 16

このパラメータの詳細については、「Array.sortOn() メソッド」を参照してください。

メモ :Array.sort() は ECMA-262 仕様を拡張した Flash 固有の機能です。ECMA-262 でも定義されていますが、配列ソートオプションは Flash Player 7 で実装したものです。

戻り値

Array - 戻り値は、次に示すように、指定されたパラメータによって異なります。

  • options パラメータに値 4 または Array.UNIQUESORT を指定し、ソート対象の複数のエレメントにまったく同じソートフィールドがある場合は 0 が返されます。配列は変更されません。
  • options パラメータに値 8 または Array.RETURNINDEXEDARRAY を指定すると、ソート結果を反映した配列が返されます。配列は変更されません。
  • それ以外の場合、値は返されません。ソート順を反映するように配列が変更されます。

シンタックス 1 : 次に、options に値が渡された場合と渡されなかった場合の Array.sort() の例を示します。

var fruits_array:Array = new Array("oranges", "apples", "strawberries", "pineapples", "cherries");
trace(fruits_array); // oranges,apples,strawberries,pineapples,cherries を表示します。
fruits_array.sort();
trace(fruits_array); // apples,cherries,oranges,pineapples,strawberries を表示します。
trace(fruits_array); // apples,cherries,oranges,pineapples,strawberries を書き込みます。
fruits_array.sort(Array.DESCENDING);
trace(fruits_array); // strawberries,pineapples,oranges,cherries,apples を表示します。
trace(fruits_array); // strawberries,pineapples,oranges,cherries,apples を書き込みます。

シンタックス 2 : 次に、Array.sort() と比較関数を組み合わせた例を示します。エントリは "名前:パスワード" でソートされます。エントリの名前の部分だけをソート条件として使用します。

var passwords_array:Array = new Array("mom:glam", "ana:ring", "jay:mag", "anne:home", "regina:silly");
function order(a, b):Number {
    var name1:String = a.split(":")[0];
    var name2:String = b.split(":")[0];
    if (name1<name2) {
    return -1;
    } else if (name1>name2) {
    return 1;
    } else {
    return 0;
    }
}
trace("Unsorted:");
//Unsorted: を表示します。
trace(passwords_array);
//mom:glam,ana:ring,jay:mag,anne:home,regina:silly を表示します。
//mom:glam,ana:ring,jay:mag,anne:home,regina:silly を書き込みます。
passwords_array.sort(order);
trace("Sorted:");
//Sorted: を表示します。
trace(passwords_array);
//ana:ring,anne:home,jay:mag,mom:glam,regina:silly を表示します。
//ana:ring,anne:home,jay:mag,mom:glam,regina:silly を書き込みます。

関連項目

| ビット単位の論理和 (OR) 演算子, sortOn (Array.sortOn メソッド)

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート