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

Array  - AS3

パッケージトップレベル
クラスpublic dynamic class Array
継承Array Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

Array クラスを使用すると、配列にアクセスして操作することができます。配列インデックスは 0 から始まります。つまり、配列内の最初のエレメントは [0]、2 番目のエレメントは [1](以下同様)になります。Array オブジェクトを作成するには、new Array() コンストラクターを使用します。 Array() は関数としても呼び出すことができます。 さらに、配列アクセス([])演算子を使用すると、配列の初期化または配列のエレメントへのアクセスを行うことができます。

配列エレメントには、数値、ストリング、オブジェクトを含む各種データ型、さらに他の配列も保存できます。インデックス付き配列を作成し、その各エレメントに異なるインデックス配列を割り当てれば、「多次元」配列を作成できます。このような配列は、テーブル内のデータの表現に使用できるので、多次元であると考えられます。

配列は「希薄な配列」です。つまり、インデックス 0 に 1 つのエレメント、インデックス 5 に別のエレメントが存在しても、この 2 つのエレメントの間のインデックス位置にはエレメントが存在しない場合があります。このような場合、1 から 4 までの位置のエレメントは未定義となります。これはエレメントが存在しないことを示しており、必ずしも値 undefined を持つエレメントが存在するわけではありません。

配列では、値による代入ではなく、参照による代入が行われます。 ある配列変数に別の配列変数を代入すると、両方とも同じ配列を参照するようになります。

 var oneArray:Array = new Array("a", "b", "c");
 var twoArray:Array = oneArray; // Both array variables refer to the same array.
 twoArray[0] = "z";             
 trace(oneArray);               // Output: z,b,c.
 

「結合配列」(「ハッシュ」とも呼ばれる)の作成には Array クラスを使用しないでください。結合配列は、数値エレメントではなく名前付きエレメントを含むデータ構造です。結合配列の作成には、Object クラスを使用してください。ActionScript では Array クラスを使用して結合配列を作成できますが、結合配列で Array クラスのメソッドやプロパティは使用できません。

Array クラスを拡張してメソッドをオーバーライドまたは追加することができます。ただし、サブクラスを dynamic として指定する必要があります。そうしない場合、配列にデータを保管する機能が失われます。

例を表示

関連する API エレメント



パブリックプロパティ
 プロパティ定義元
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。
Object
  length : uint
配列内のエレメント数を示す負でない整数です。
Array
パブリックメソッド
 メソッド定義元
  
Array(... values)
指定されたエレメントを持つ配列を作成することができます。
Array
  
Array(numElements:int = 0)
指定された数のエレメントを持つ配列を作成することができます。
Array
  
パラメーターで指定されたエレメントを配列内のエレメントと連結して、新しい配列を作成します。
Array
  
every(callback:Function, thisObject:* = null):Boolean
指定された関数について false を返すアイテムに達するまで、配列内の各アイテムにテスト関数を実行します。
Array
  
filter(callback:Function, thisObject:* = null):Array
配列内の各アイテムについてテスト関数を実行し、指定された関数について true を返すすべてのアイテムを含む新しい配列を作成します。
Array
  
forEach(callback:Function, thisObject:* = null):void
配列内の各アイテムについて関数を実行します。
Array
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
  
indexOf(searchElement:*, fromIndex:int = 0):int
厳密な等価(===)を使用して配列内のアイテムを検索し、アイテムのインデックス位置を返します。
Array
  
insertAt(index:int, element:*):void
単一のエレメントを配列に挿入します。
Array
 Inherited
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
  
配列内のエレメントをストリングに変換し、指定されたセパレーターをエレメント間に挿入し、エレメントを連結して、その結果をストリングとして返します。
Array
  
lastIndexOf(searchElement:*, fromIndex:int = 0x7fffffff):int
配列内のアイテムを、最後のアイテムから先頭に向かって検索し、厳密な等価(===)を使用して、一致したアイテムのインデックス位置を返します。
Array
  
map(callback:Function, thisObject:* = null):Array
配列内の各アイテムについて関数を実行し、元の配列の各アイテムに対する関数の結果に対応するアイテムから成る新しい配列を作成します。
Array
  
pop():*
配列の最後のエレメントを削除して、そのエレメントの値を返します。
Array
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
  
push(... args):uint
エレメントを配列の最後に追加して、追加後の配列の長さを返します。
Array
  
removeAt(index:int):*
単一のエレメントを配列から削除します。
Array
  
配列の並びを反転させます。
Array
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  
配列の最初のエレメントを削除して、そのエレメントを返します。
Array
  
slice(startIndex:int = 0, endIndex:int = 16777215):Array
元の配列から一連のエレメントを取り出して、新しい配列を返します。元の配列は変更されません。
Array
  
some(callback:Function, thisObject:* = null):Boolean
true を返すアイテムに達するまで、配列内の各アイテムにテスト関数を実行します。
Array
  
sort(... args):Array
配列内のエレメントをソートします。
Array
  
sortOn(fieldName:Object, options:Object = null):Array
配列内のフィールド(複数のフィールドも可能)に基づいて、配列内のエレメントをソートします。
Array
  
splice(startIndex:int, deleteCount:uint, ... values):Array
配列のエレメントを追加および削除します。
Array
  
指定された配列内のエレメントを表すストリングを返します。
Array
  
指定された配列内のエレメントを表すストリングを返します。
Array
  
エレメントを配列の先頭に追加して、配列の新しい長さを返します。
Array
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
パブリック定数
 定数定義元
  CASEINSENSITIVE : uint = 1
[静的] Array クラスのソートメソッドに対して、大文字と小文字を区別しないソートを指定します。
Array
  DESCENDING : uint = 2
[静的] Array クラスのソートメソッドに対して、降順でのソートを指定します。
Array
  NUMERIC : uint = 16
[静的] Array クラスのソートメソッドに対して、文字ストリングではなく数値によるソートを指定します。
Array
  RETURNINDEXEDARRAY : uint = 8
[静的] ソート結果として、配列インデックスで構成される配列を返すことを指定します。
Array
  UNIQUESORT : uint = 4
[静的] Array クラスのソートメソッドに対して、一意性ソート要件を指定します。
Array
プロパティの詳細

length

プロパティ
length:uint

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

配列内のエレメント数を示す負でない整数です。このプロパティは、新しいエレメントが配列に追加されると自動更新されます。配列エレメントに値を割り当てるとき(my_array[index] = value など)、index が数値でかつ index+1length プロパティよりも大きい場合、length プロパティが index+1 に更新されます。

注意:length プロパティに既存の長さよりも短い値を割り当てた場合、配列は切り詰められます。



実装
    public function get length():uint
    public function set length(value:uint):void

例  ( この例の使用方法 )
次のコードは、Array オブジェクト names を作成し、ストリングエレメント Bill を設定します。次に、push() メソッドを使用して、別のストリングエレメント Kyle を追加します。配列の長さは、length プロパティで決められているエレメント 1 個(push() を使う前)ですが、push() を呼び出した後はエレメント 2 個になります。別のストリング Jeff を追加すると、names の長さは、エレメント 3 個になります。次に shift() メソッドを 2 回呼び出し、BillKyle を削除すると、最終的に配列の length は 1 個になります。
var names:Array = new Array("Bill");
names.push("Kyle");
trace(names.length); // 2

names.push("Jeff");
trace(names.length); // 3

names.shift();
names.shift();
trace(names.length); // 1
コンストラクターの詳細

Array

()コンストラクター
public function Array(... values)

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

指定されたエレメントを持つ配列を作成することができます。任意の型の値を指定することができます。配列内の最初のエレメントのインデックスまたは位置は、常に 0 です。

注意:このクラスは、2 つのコンストラクター項目を示しています。コンストラクターはさまざまなタイプの引数を受け入れるためです。コンストラクターの動作は、各項目で詳細を示すように、渡される引数の型と数によって異なります。ActionScript 3.0 はメソッドまたはコンストラクターのオーバーロードをサポートしていません。

パラメーター
... values — 複数の任意の値で構成されるカンマ区切りリストです。

注意:Array コンストラクターに数値パラメーターを 1 つだけ渡した場合、そのパラメーターは配列の length プロパティを指定するものと見なされます。


例外
RangeError — 引数は、0 以上の整数ではない数値です。

関連する API エレメント


例  ( この例の使用方法 )

次の例では、初期エレメント数が 3 個の新しい Array オブジェクトを作成して、この配列にストリングエレメント onetwothree を設定し、その配列をストリングに変換します。
package {
    import flash.display.Sprite;

    public class Array_Array_3 extends Sprite {

        public function Array_Array_3() {
            var myArr:Array = new Array("one", "two", "three");
            trace(myArr.length); // 3
            trace(myArr);          // one,two,three
        }
    }
}

Array

()コンストラクター 
public function Array(numElements:int = 0)

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

指定された数のエレメントを持つ配列を作成することができます。パラメーターを指定しない場合は、0 個のエレメントを持つ配列が作成されます。エレメント数を指定する場合は、numElements 個のエレメントを持つ配列が作成されます。

注意:このクラスは、2 つのコンストラクターメソッド項目を示しています。コンストラクターはさまざまなタイプの引数を受け入れるためです。コンストラクターの動作は、各項目で詳細を示すように、渡される引数の型と数によって異なります。ActionScript 3.0 はメソッドまたはコンストラクターのオーバーロードをサポートしていません。

パラメーター
numElements:int (default = 0) — 配列内のエレメント数を指定する整数です。

例外
RangeError — 引数は、0 以上の整数ではない数値です。

関連する API エレメント


例  ( この例の使用方法 )

次の例では、引数がなく初期のエレメント数が 0 個の Array オブジェクト myArr を作成します。
package {
    import flash.display.Sprite;

    public class Array_Array extends Sprite {

        public function Array_Array() {
            var myArr:Array = new Array();
            trace(myArr.length); // 0
        }
    }
}

次の例では、5 個の初期エレメント(長さが 5)を持つ Array オブジェクトを作成して、1 番目のエレメントにストリング "one" を設定し、ストリングエレメント "six" を、push() メソッドを使用して配列の最後に追加します。
package {
    import flash.display.Sprite;

    public class Array_Array_2 extends Sprite {

        public function Array_Array_2() {
            var myArr:Array = new Array(5);
            trace(myArr.length); // 5
            myArr[0] = "one";
            myArr.push("six");
            trace(myArr);         // one,,,,,six
            trace(myArr.length); // 6
        }
    }
}
メソッドの詳細

concat

()メソッド
AS3 function concat(... args):Array

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

パラメーターで指定されたエレメントを配列内のエレメントと連結して、新しい配列を作成します。パラメーターで配列を指定すると、その配列のエレメントが連結されます。パラメーターを渡さない場合、新しい配列は元の配列の複製(浅い複製)になります。

パラメーター

... args — 新しい配列内で連結する任意のデータ型(数値、エレメント、ストリングなど)の値です。

戻り値
Array — この配列のエレメントの後にパラメーターのエレメントが続く配列です。

例  ( この例の使用方法 )

次のコードは、4 つの Array オブジェクトを作成します。
  • numbers 配列。数値の 12、および3 が含まれています。
  • letters 配列。文字の ab、および c が含まれています。
  • numbersAndLetters 配列。concat() メソッドを呼び出し、配列 [1,2,3,a,b,c] を作成します。
  • lettersAndNumbers 配列。concat() メソッドを呼び出し、配列 [a,b,c,1,2,3] を作成します。
var numbers:Array = new Array(1, 2, 3);
var letters:Array = new Array("a", "b", "c");
var numbersAndLetters:Array = numbers.concat(letters);
var lettersAndNumbers:Array = letters.concat(numbers);

trace(numbers);       // 1,2,3
trace(letters);       // a,b,c
trace(numbersAndLetters); // 1,2,3,a,b,c
trace(lettersAndNumbers); // a,b,c,1,2,3

every

()メソッド 
AS3 function every(callback:Function, thisObject:* = null):Boolean

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

指定された関数について false を返すアイテムに達するまで、配列内の各アイテムにテスト関数を実行します。このメソッドを使用して、配列内のすべてのアイテムがある基準(値が特定の数値より小さいなど)を満たしているかどうかを判別できます。

このメソッドで、2 番目のパラメーター thisObject は、null でなければなりません(最初のパラメーター callback がメソッド閉包である場合)。例えば、me というムービークリップ内に、ある関数を作成するとします。

     function myFunction(obj:Object):void {
        //your code here
     }
     

次に、every() メソッドを、myArray という配列に対して使用するとします。

     myArray.every(myFunction, me);
     

myFunction は、Timeline クラスのメンバーであり、me でオーバーライドできないので、Flash ランタイムは例外をスローします。このランタイムエラーは、次のように関数を変数に割り当てることによって回避できます。

     var myFunction:Function = function(obj:Object):void {
         //your code here
     };
     myArray.every(myFunction, me);
     

パラメーター

callback:Function — 配列内の各アイテムについて実行する関数です。この関数には、単純な比較(item < 20 など)やより複雑な演算を含めることができます。また、この関数は、次のように、アイテムの値、アイテムのインデックス、および Array オブジェクトの 3 つの引数を使用して呼び出されます。
function callback(item:*, index:int, array:Array):Boolean;
 
thisObject:* (default = null) — 関数の this として使用するオブジェクトです。

戻り値
Boolean — ブール値です。true を返します(指定された関数について配列内のすべてのアイテムが true を返す場合)。それ以外の場合は false を返します。

関連する API エレメント


例  ( この例の使用方法 )

次の例では、2 つの配列をテストして、各配列内のすべてのアイテムが数値であるかどうかを判別します。また、テストの結果を出力します。結果は、isNumeric が最初の配列で true、2 番目の配列で false であることを示しています。
package {
    import flash.display.Sprite;
    public class Array_every extends Sprite {
        public function Array_every() {
            var arr1:Array = new Array(1, 2, 4);
            var res1:Boolean = arr1.every(isNumeric);
            trace("isNumeric:", res1); // true
 
            var arr2:Array = new Array(1, 2, "ham");
            var res2:Boolean = arr2.every(isNumeric);
            trace("isNumeric:", res2); // false
        }
        private function isNumeric(element:*, index:int, arr:Array):Boolean {
            return (element is Number);
        }
    }
}

filter

()メソッド 
AS3 function filter(callback:Function, thisObject:* = null):Array

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

配列内の各アイテムについてテスト関数を実行し、指定された関数について true を返すすべてのアイテムを含む新しい配列を作成します。false を返すアイテムは、新しい配列に含められません。

このメソッドで、2 番目のパラメーター thisObject は、null でなければなりません(最初のパラメーター callback がメソッド閉包である場合)。例えば、me というムービークリップ内に、ある関数を作成するとします。

     function myFunction(obj:Object):void {
        //your code here
     }
     

次に、filter() メソッドを、myArray という配列に対して使用するとします。

 
     myArray.filter(myFunction, me);
     

myFunction は、Timeline クラスのメンバーであり、me でオーバーライドできないので、Flash ランタイムは例外をスローします。このランタイムエラーは、次のように関数を変数に割り当てることによって回避できます。

     var myFunction:Function = function(obj:Object):void {
         //your code here
         };
     myArray.filter(myFunction, me);
     

パラメーター

callback:Function — 配列内の各アイテムについて実行する関数です。この関数には、単純な比較(item < 20 など)やより複雑な演算を含めることができます。また、この関数は、次のように、アイテムの値、アイテムのインデックス、および Array オブジェクトの 3 つの引数を使用して呼び出されます。
    function callback(item:*, index:int, array:Array):Boolean;
 
thisObject:* (default = null) — 関数の this として使用するオブジェクトです。

戻り値
Array — 元の配列内のアイテムで true を返したものをすべて含む新しい配列です。

関連する API エレメント


例  ( この例の使用方法 )

次の例では、管理者であるすべての従業員の配列を作成しています。
package {
    import flash.display.Sprite;
    public class Array_filter extends Sprite {
        public function Array_filter() {
            var employees:Array = new Array();
            employees.push({name:"Employee 1", manager:false});
            employees.push({name:"Employee 2", manager:true});
            employees.push({name:"Employee 3", manager:false});
            trace("Employees:");
            employees.forEach(traceEmployee);
            
            var managers:Array = employees.filter(isManager);
            trace("Managers:");
            managers.forEach(traceEmployee);
        }
        private function isManager(element:*, index:int, arr:Array):Boolean {
            return (element.manager == true);
        }
        private function traceEmployee(element:*, index:int, arr:Array):void {
            trace("\t" + element.name + ((element.manager) ? " (manager)" : ""));
        }
    }
}

forEach

()メソッド 
AS3 function forEach(callback:Function, thisObject:* = null):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

配列内の各アイテムについて関数を実行します。

このメソッドで、2 番目のパラメーター thisObject は、null でなければなりません(最初のパラメーター callback がメソッド閉包である場合)。例えば、me というムービークリップ内に、ある関数を作成するとします。

     function myFunction(obj:Object):void {
        //your code here
     }
     

次に、forEach() メソッドを、myArray という配列に対して使用するとします。

     myArray.forEach(myFunction, me);
     

myFunction は、Timeline クラスのメンバーであり、me でオーバーライドできないので、Flash ランタイムは例外をスローします。このランタイムエラーは、次のように関数を変数に割り当てることによって回避できます。

     var myFunction:Function = function(obj:Object):void {
         //your code here
         };
     myArray.forEach(myFunction, me);
     

パラメーター

callback:Function — 配列内の各アイテムについて実行する関数です。この関数には、単純なコマンド(trace() ステートメントなど)やより複雑な演算を含めることができます。また、この関数は、次のように、アイテムの値、アイテムのインデックス、および Array オブジェクトの 3 つの引数を使用して呼び出されます。
    function callback(item:*, index:int, array:Array):void;
 
thisObject:* (default = null) — 関数の this として使用するオブジェクトです。


例  ( この例の使用方法 )

次の例では、配列内の各アイテムについて trace() ステートメントを、traceEmployee() 関数で実行しています。
package {
    import flash.display.Sprite;
    public class Array_forEach extends Sprite {
        public function Array_forEach() {
            var employees:Array = new Array();
            employees.push({name:"Employee 1", manager:false});
            employees.push({name:"Employee 2", manager:true});
            employees.push({name:"Employee 3", manager:false});
            trace(employees);
            employees.forEach(traceEmployee);
        }
        private function traceEmployee(element:*, index:int, arr:Array):void {
            trace(element.name + " (" + element.manager + ")");
        }
    }
}

次の例もまた、配列内の各アイテムについて trace()ステートメントを実行していますが、ここで使用する traceEmployee() 関数には若干の変更が加えられています。
package {
    import flash.display.Sprite;
    public class Array_forEach_2 extends Sprite {
        public function Array_forEach_2() {
            var employeeXML:XML = <employees>
                    <employee name="Steven" manager="false" />
                    <employee name="Bruce" manager="true" />
                    <employee name="Rob" manager="false" />
                </employees>;
            var employeesList:XMLList = employeeXML.employee;
            var employeesArray:Array = new Array();
            for each (var tempXML:XML in employeesList) {
                employeesArray.push(tempXML);
            }
            employeesArray.sortOn("@name");
            employeesArray.forEach(traceEmployee);
        }
        private function traceEmployee(element:*, index:Number, arr:Array):void {
            trace(element.@name + ((element.@manager == "true") ? " (manager)" : ""));
        }
    }
}

indexOf

()メソッド 
AS3 function indexOf(searchElement:*, fromIndex:int = 0):int

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

厳密な等価(===)を使用して配列内のアイテムを検索し、アイテムのインデックス位置を返します。

パラメーター

searchElement:* — 配列内で検索するアイテムです。
 
fromIndex:int (default = 0) — アイテムの検索を開始する配列内の場所です。

戻り値
int — 配列内のアイテムの 0 から始まるインデックス位置です。searchElement 引数が見つからなかった場合、戻り値は -1 です。

関連する API エレメント


例  ( この例の使用方法 )

次の例では、指定された配列の位置を表示しています。
package {
    import flash.display.Sprite;
    public class Array_indexOf extends Sprite {
        public function Array_indexOf() {
            var arr:Array = new Array(123,45,6789);
            arr.push("123-45-6789");
            arr.push("987-65-4321");
            
            var index:int = arr.indexOf("123");
            trace(index); // -1
            
            var index2:int = arr.indexOf(123);
            trace(index2); // 0
        }
    }
}

insertAt

()メソッド 
AS3 function insertAt(index:int, element:*):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 19, AIR 19

単一のエレメントを配列に挿入します。このメソッドは、コピーを作成しないで、配列を変更します。

パラメーター

index:int — エレメントを挿入する配列内の位置を示す整数です。負の整数を使用すると、配列の末尾を基準として位置を指定できます。例えば、-1 は配列の最後のエレメントです。
 
element:*

join

()メソッド 
AS3 function join(sep:*):String

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

配列内のエレメントをストリングに変換し、指定されたセパレーターをエレメント間に挿入し、エレメントを連結して、その結果をストリングとして返します。ネストされた配列は、join() メソッドに渡されるセパレーターで区切るのではなく、常にカンマ(,)で区切ります。

パラメーター

sep:* (default = NaN) — 返されたストリング内の配列エレメントを区切る文字またはストリングです。このパラメーターを省略すると、デフォルトのセパレーターとしてカンマが使用されます。

戻り値
String — ストリングに変換された配列のエレメントで構成され、指定されたパラメーターで区切られているストリングです。

関連する API エレメント


例  ( この例の使用方法 )

次のコードは、Array オブジェクトmyArr を作成し、エレメント onetwothree を設定します。次に one and two and three を含むストリングを、join() メソッドを使って作成します。
var myArr:Array = new Array("one", "two", "three");
var myStr:String = myArr.join(" and ");
trace(myArr); // one,two,three
trace(myStr); // one and two and three

次のコードは、Array オブジェクト specialChars を作成し、エレメント ()- と空白文字を設定します。次に (888) 867-5309 を含むストリングを作成します。次に、for ループを使用して、specialChars にリストされている各型の特殊文字を削除し、ストリング(myStr)を作成します。このストリングは、電話番号の数字の桁(888675309)のみが残されたものです。+ などの他の文字を specialChars に追加することもできるので、このルーチンは国際電話番号の形式にも対応します。
var phoneString:String = "(888) 867-5309";

var specialChars:Array = new Array("(", ")", "-", " ");
var myStr:String = phoneString;

var ln:uint = specialChars.length;
for(var i:uint; i < ln; i++) {
    myStr = myStr.split(specialChars[i]).join("");
}

var phoneNumber:Number = new Number(myStr);

trace(phoneString); // (888) 867-5309
trace(phoneNumber); // 8888675309

lastIndexOf

()メソッド 
AS3 function lastIndexOf(searchElement:*, fromIndex:int = 0x7fffffff):int

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

配列内のアイテムを、最後のアイテムから先頭に向かって検索し、厳密な等価(===)を使用して、一致したアイテムのインデックス位置を返します。

パラメーター

searchElement:* — 配列内で検索するアイテムです。
 
fromIndex:int (default = 0x7fffffff) — アイテムの検索を開始する配列内の場所です。デフォルトは、インデックスに許可されている最大値です。fromIndex を指定しない場合、配列内の最後のアイテムから検索が開始されます。

戻り値
int — 配列内のアイテムの 0 から始まるインデックス位置です。searchElement 引数が見つからなかった場合、戻り値は -1 です。

関連する API エレメント


例  ( この例の使用方法 )

次の例では、指定された配列の位置を表示しています。
package {
    import flash.display.Sprite;
    public class Array_lastIndexOf extends Sprite {
        public function Array_lastIndexOf() {
            var arr:Array = new Array(123,45,6789,123,984,323,123,32);
            
            var index:int = arr.indexOf(123);
            trace(index); // 0
            
            var index2:int = arr.lastIndexOf(123);
            trace(index2); // 6
        }
    }
}

map

()メソッド 
AS3 function map(callback:Function, thisObject:* = null):Array

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

配列内の各アイテムについて関数を実行し、元の配列の各アイテムに対する関数の結果に対応するアイテムから成る新しい配列を作成します。

このメソッドで、2 番目のパラメーター thisObject は、null でなければなりません(最初のパラメーター callback がメソッド閉包である場合)。例えば、me というムービークリップ内に、ある関数を作成するとします。

     function myFunction(obj:Object):void {
        //your code here
     }
     

次に、map() メソッドを、myArray という配列に対して使用するとします。

     myArray.map(myFunction, me);
     

myFunction は、Timeline クラスのメンバーであり、me でオーバーライドできないので、Flash ランタイムは例外をスローします。このランタイムエラーは、次のように関数を変数に割り当てることによって回避できます。

     var myFunction:Function = function(obj:Object):void {
         //your code here
         };
     myArray.map(myFunction, me);
     

パラメーター

callback:Function — 配列内の各アイテムについて実行する関数です。この関数には、単純なコマンド(ストリングの配列の大文字小文字の変更など)やより複雑な演算を含めることができます。また、この関数は、次のように、アイテムの値、アイテムのインデックス、および Array オブジェクトの 3 つの引数を使用して呼び出されます。
    function callback(item:*, index:int, array:Array):String;
 
thisObject:* (default = null) — 関数の this として使用するオブジェクトです。

戻り値
Array — 元の配列内の各アイテムの関数の結果が含まれる新しい配列です。

関連する API エレメント


例  ( この例の使用方法 )

次の例では、配列内のすべてのアイテムを大文字に変更しています。
package {
    import flash.display.Sprite;
    public class Array_map extends Sprite {
        public function Array_map() {
            var arr:Array = new Array("one", "two", "Three");
            trace(arr); // one,two,Three

            var upperArr:Array = arr.map(toUpper);
            trace(upperArr); // ONE,TWO,THREE
        }
        private function toUpper(element:*, index:int, arr:Array):String {
            return String(element).toUpperCase();
        }
    }
}

pop

()メソッド 
AS3 function pop():*

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

配列の最後のエレメントを削除して、そのエレメントの値を返します。

戻り値
* — 指定した配列の最後のエレメント(任意のデータ型)の値です。

関連する API エレメント


例  ( この例の使用方法 )

次のコードは、Array オブジェクト letters を作成し、エレメント abc を設定します。次に、最後のエレメント(c)を、pop() メソッドを使って配列から削除し、String オブジェクト letter に割り当てます。
var letters:Array = new Array("a", "b", "c");
trace(letters); // a,b,c
var letter:String = letters.pop();
trace(letters); // a,b
trace(letter);     // c

push

()メソッド 
AS3 function push(... args):uint

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

エレメントを配列の最後に追加して、追加後の配列の長さを返します。

パラメーター

... args — 配列に追加される値です。

戻り値
uint — 新しい配列の長さを表す整数です。

関連する API エレメント


例  ( この例の使用方法 )

次のコードは、空の Array オブジェクト letters を作成し、次にエレメント abc を、push() メソッドを使って配列に設定します。
var letters:Array = new Array();

letters.push("a");
letters.push("b");
letters.push("c");

trace(letters.toString()); // a,b,c

次のコードは、Array オブジェクト letters を作成します。このオブジェクトには、エレメント a が最初から設定されています。push() メソッドを 1 度使用して、エレメント bc を配列の最後に追加します。push 後は、この配列のエレメントは 3 つになります。
var letters:Array = new Array("a");
var count:uint = letters.push("b", "c");

trace(letters); // a,b,c
trace(count);   // 3

removeAt

()メソッド 
AS3 function removeAt(index:int):*

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 19, AIR 19

単一のエレメントを配列から削除します。このメソッドは、コピーを作成しないで、配列を変更します。

パラメーター

index:int — 削除する配列内のエレメントのインデックスを示す整数です。負の整数を使用すると、配列の末尾を基準として位置を指定できます。例えば、-1 は配列の最後のエレメントです。

戻り値
* — 元の配列から削除されたエレメントです。

reverse

()メソッド 
AS3 function reverse():Array

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

配列の並びを反転させます。

戻り値
Array — 新しい配列です。

例  ( この例の使用方法 )

次のコードは、Array オブジェクト letters を作成し、エレメント abc を設定します。次に、reverse() メソッドを使用して、配列エレメントの順序を反転し、配列 [c,b,a] を作成します。
var letters:Array = new Array("a", "b", "c");
trace(letters); // a,b,c
letters.reverse();
trace(letters); // c,b,a

shift

()メソッド 
AS3 function shift():*

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

配列の最初のエレメントを削除して、そのエレメントを返します。残りの配列エレメントは、元の位置 i から i-1 に移動されます。

戻り値
* — 配列内の最初のエレメント(任意のデータ型)です。

関連する API エレメント


例  ( この例の使用方法 )

次のコードは、Array オブジェクト letters を作成し、エレメント abc を設定します。次に、shift() メソッドを使用して、1 番目のエレメント(a)を letters から削除し、それをストリング firstLetter に割り当てます。
var letters:Array = new Array("a", "b", "c");
var firstLetter:String = letters.shift();
trace(letters);     // b,c
trace(firstLetter); // a

slice

()メソッド 
AS3 function slice(startIndex:int = 0, endIndex:int = 16777215):Array

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

元の配列から一連のエレメントを取り出して、新しい配列を返します。元の配列は変更されません。返される配列には、startIndex エレメントから endIndex の前のエレメントまでのすべてのエレメントが含まれます。

パラメーターを渡さない場合、新しい配列は元の配列の複製(浅い複製)になります。

パラメーター

startIndex:int (default = 0) — スライスの始点のインデックスを示す数値です。startIndex が負の数値の場合、始点は配列の末尾から開始します。つまり、-1 が最後のエレメントです。
 
endIndex:int (default = 16777215) — スライスの終点のインデックスを示す数値です。 このパラメーターを省略すると、スライスには配列の最初から最後までのすべてのエレメントが取り込まれます。endIndex が負の数値の場合、終点は配列の末尾から開始します。つまり、-1 が最後のエレメントです。

戻り値
Array — 元の配列から取り出した一連のエレメントから成る配列です。

例  ( この例の使用方法 )

次のコードは、Array オブジェクト letters を作成し、エレメント [a,b,c,d,e,f] を設定します。次に、配列 someLetters を、slice() メソッドを呼び出し、エレメント 1(b)から エレメント 3(d)に対して作成します。その結果、作成される配列には bc が設定されます。
var letters:Array = new Array("a", "b", "c", "d", "e", "f");
var someLetters:Array = letters.slice(1,3);

trace(letters);     // a,b,c,d,e,f
trace(someLetters); // b,c

次のコードは、Array オブジェクト letters を作成し、エレメント [a,b,c,d,e,f] を設定します。次に、配列 someLetters を、slice() メソッドを呼び出し、エレメント 2(c)に対して作成します。その結果、作成された配列には [c,d,e,f] が設定されます。
var letters:Array = new Array("a", "b", "c", "d", "e", "f");
var someLetters:Array = letters.slice(2);

trace(letters);     // a,b,c,d,e,f
trace(someLetters); // c,d,e,f

次のコードは、Array オブジェクト letters を作成し、エレメント [a,b,c,d,e,f] を設定します。次に、配列 someLetters を、slice() メソッドを最後から 2 番目のエレメント e に対して呼び出すことにより作成します。その結果、作成される配列には ef が設定されます。
var letters:Array = new Array("a", "b", "c", "d", "e", "f");
var someLetters:Array = letters.slice(-2);

trace(letters);     // a,b,c,d,e,f
trace(someLetters); // e,f

some

()メソッド 
AS3 function some(callback:Function, thisObject:* = null):Boolean

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

true を返すアイテムに達するまで、配列内の各アイテムにテスト関数を実行します。このメソッドを使用して、配列内のいずれのアイテムもある基準(値が特定の数値より小さいなど)を満たしているかどうかを判別できます。

このメソッドで、2 番目のパラメーター thisObject は、null でなければなりません(最初のパラメーター callback がメソッド閉包である場合)。例えば、me というムービークリップ内に、ある関数を作成するとします。

     function myFunction(obj:Object):void {
        //your code here
     }
     

次に、some() メソッドを、myArray という配列に対して使用するとします。

     myArray.some(myFunction, me);
     

myFunction は、Timeline クラスのメンバーであり、me でオーバーライドできないので、Flash ランタイムは例外をスローします。このランタイムエラーは、次のように関数を変数に割り当てることによって回避できます。

     var myFunction:Function = function(obj:Object):void {
         //your code here
         };
     myArray.some(myFunction, me);
     

パラメーター

callback:Function — 配列内の各アイテムについて実行する関数です。この関数には、単純な比較(item < 20 など)やより複雑な演算を含めることができます。また、この関数は、次のように、アイテムの値、アイテムのインデックス、および Array オブジェクトの 3 つの引数を使用して呼び出されます。
    function callback(item:*, index:int, array:Array):Boolean;
 
thisObject:* (default = null) — 関数の this として使用するオブジェクトです。

戻り値
Boolean — ブール値です。true を返します(指定された関数について配列内のいずれかのアイテムが true を返す場合)。それ以外の場合は false を返します。

関連する API エレメント


例  ( この例の使用方法 )

次の例では、未定義の値を表示しています。
package {
    import flash.display.Sprite;
    public class Array_some extends Sprite {
        public function Array_some() {
            var arr:Array = new Array();
            arr[0] = "one";
            arr[1] = "two";
            arr[3] = "four";
            var isUndef:Boolean = arr.some(isUndefined);
            if (isUndef) {
                trace("array contains undefined values: " + arr);
            } else {
                trace("array contains no undefined values.");
            }
        }
        private function isUndefined(element:*, index:int, arr:Array):Boolean {
            return (element == undefined);
        }
    }
}

sort

()メソッド 
AS3 function sort(... args):Array

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

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

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

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

デフォルト設定とは別の設定を使用して配列をソートする場合は、sortOptions 部分(...args パラメーター)に記述されているソートオプションのいずれかを使用するか、またはソート処理を行う独自のカスタム関数を作成できます。カスタム関数を作成する場合、sort() メソッドを呼び出して、カスタム関数の名前を最初の引数(compareFunction)として使用します。

パラメーター

... args — 比較関数を指定する引数と、ソート動作を決定する値です。

このメソッドでは、Array.sort(compareFunction, sortOptions) というシンタックスおよび引数順を使用し、各引数は次のように定義されます。

  • compareFunction - 配列内のエレメントのソート順を決定する比較関数。この引数はオプションです。比較関数には、比較を行うために 2 つの引数が必要です。エレメント A とエレメント B を compareFunction で比較した結果は、負、0 または正の値になります。
    • 負の戻り値は、ソートの結果 A が先、B が後になることを意味します。
    • 0 の戻り値は、ソートの結果 A と B が同じ順序になることを意味します。
    • 正の戻り値は、ソートの結果 B が先、A が後になることを意味します。
  • sortOptions - デフォルトのソート動作を変更する数値または定義済み定数。複数指定する場合は、ビット単位の論理和(OR)| 演算子で区切ります。この引数はオプションです。sortOptions の許容値は次のとおりです。
    • 1 または Array.CASEINSENSITIVE
    • 2 または Array.DESCENDING
    • 4 または Array.UNIQUESORT
    • 8 または Array.RETURNINDEXEDARRAY
    • 16 または Array.NUMERIC
    詳細については、Array.sortOn() メソッドを参照してください。

戻り値
Array — 戻り値は、次に示すように、渡された引数によって異なります。
  • 値 4 または Array.UNIQUESORTsortOptions 引数(...args パラメーター)に指定すると、ソート対象のエレメントに同じソートフィールドを持つものが複数ある場合、値 0 が返されます。配列は変更されません。
  • 値 8 または Array.RETURNINDEXEDARRAYsortOptions 引数(...args パラメーター)に指定した場合、ソート結果を反映したインデックスの数値配列が返されます。配列は変更されません。
  • それ以外の場合、値は返されません。ソート順を反映するように配列が変更されます。

関連する API エレメント


例  ( この例の使用方法 )

次のコードは、Array オブジェクト vegetables を作成し、エレメント [spinach, green pepper, cilantro, onion, avocado] を設定します。次に、sort() メソッドを使用して配列をソートします。メソッドの呼び出しにはパラメーターを使用しません。その結果、vegetables は、アルファベット順でソートされ、[avocado, cilantro, green pepper, onion, spinach] のようになります。
var vegetables:Array = new Array("spinach",
                 "green pepper",
                 "cilantro",
                 "onion",
                 "avocado");

trace(vegetables); // spinach,green pepper,cilantro,onion,avocado
vegetables.sort();
trace(vegetables); // avocado,cilantro,green pepper,onion,spinach

次のコードは、Array オブジェクト vegetables を作成し、エレメント [spinach, green pepper, Cilantro, Onion, and Avocado] を設定します。最初に、sort() メソッドをパラメーターなしで呼び出して配列をソートします。その結果、配列は [Avocado,Cilantro,Onion,green pepper,spinach] のようになります。再度、sort()vegetables に対して呼び出します。このとき、CASEINSENSITIVE 定数をパラメーターとして指定します。その結果、vegetables は、アルファベット順でソートされ、[Avocado, Cilantro, green pepper, Onion, spinach] のようになります。
var vegetables:Array = new Array("spinach",
                 "green pepper",
                 "Cilantro",
                 "Onion",
                 "Avocado");

vegetables.sort();
trace(vegetables); // Avocado,Cilantro,Onion,green pepper,spinach
vegetables.sort(Array.CASEINSENSITIVE);
trace(vegetables); // Avocado,Cilantro,green pepper,Onion,spinach

次のコードは、空の Array オブジェクト vegetables を作成し、次に push() を 5 回呼び出して配列を設定します。各 push() 呼び出しで、新しい Vegetable オブジェクトが、Vegetable() コンストラクターを呼び出すことで作成されます。このコンストラクターは、String(name)オブジェクトと Number(price)オブジェクトを受け取ります。次に示す値を使用して push() を 5 回呼び出すことで、配列は次のように設定されます。[lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44] sort() メソッドを使用してこの配列をソートします。その結果、配列は [asparagus:3.99, celery:1.29, lettuce:1.49, spinach:1.89, squash:1.44] のようになります。
var vegetables:Array = new Array();
vegetables.push(new Vegetable("lettuce", 1.49));
vegetables.push(new Vegetable("spinach", 1.89));
vegetables.push(new Vegetable("asparagus", 3.99));
vegetables.push(new Vegetable("celery", 1.29));
vegetables.push(new Vegetable("squash", 1.44));

trace(vegetables);
// lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44

vegetables.sort();

trace(vegetables);
// asparagus:3.99, celery:1.29, lettuce:1.49, spinach:1.89, squash:1.44

//The following code defines the Vegetable class
class Vegetable {
    private var name:String;
    private var price:Number;

    public function Vegetable(name:String, price:Number) {
        this.name = name;
        this.price = price;
    }

    public function toString():String {
        return " " + name + ":" + price;
    }
}

次の例は、上記の例とほとんど同じですが、sort() メソッドをカスタムソート関数(sortOnPrice)と共に使用している点が異なります。このカスタム関数は、アルファベット順ではなく価格に基づいてソートを行います。新しい関数 getPrice() では価格が抽出されます。
var vegetables:Array = new Array();
vegetables.push(new Vegetable("lettuce", 1.49));
vegetables.push(new Vegetable("spinach", 1.89));
vegetables.push(new Vegetable("asparagus", 3.99));
vegetables.push(new Vegetable("celery", 1.29));
vegetables.push(new Vegetable("squash", 1.44));

trace(vegetables);
// lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44

vegetables.sort(sortOnPrice);

trace(vegetables);
// celery:1.29, squash:1.44, lettuce:1.49, spinach:1.89, asparagus:3.99

function sortOnPrice(a:Vegetable, b:Vegetable):Number {
    var aPrice:Number = a.getPrice();
    var bPrice:Number = b.getPrice();

    if(aPrice > bPrice) {
        return 1;
    } else if(aPrice < bPrice) {
        return -1;
    } else  {
        //aPrice == bPrice
        return 0;
    }
}

// The following code defines the Vegetable class and should be in a separate package.
class Vegetable {
    private var name:String;
    private var price:Number;

    public function Vegetable(name:String, price:Number) {
        this.name = name;
        this.price = price;
    }

    public function getPrice():Number {
        return price;
    }

    public function toString():String {
        return " " + name + ":" + price;
    }
}

次のコードは、Array オブジェクト numbers を作成し、エレメント [3,5,100,34,10] を設定します。パラメーターを指定せずに sort() を呼び出すと、アルファベット順にソートされるため、[10,100,3,34,5] のように期待しない結果になります。数値を正しくソートするには、定数 NUMERICsort() メソッドに渡す必要があります。この結果、numbers は、次のようにソートされます。[3,5,10,34,100] .

注意:sort() 関数のデフォルトの動作では、各エンティティがストリングとして処理されます。Array.NUMERIC 引数を使用する場合、Flash ランタイムでは、ソートを目的として、数値以外の値を整数に変換しようとします。この処理に失敗すると、ラインタイムはエラーをスローします。例えば、ストリング値 "6" は整数に正しく変換できますが、ストリング値 "six" を変換しようとした際にはエラーがスローされます。

var numbers:Array = new Array(3,5,100,34,10);

trace(numbers); // 3,5,100,34,10
numbers.sort();
trace(numbers); // 10,100,3,34,5
numbers.sort(Array.NUMERIC);
trace(numbers); // 3,5,10,34,100

sortOn

()メソッド 
AS3 function sortOn(fieldName:Object, options:Object = null):Array

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

配列内のフィールド(複数のフィールドも可能)に基づいて、配列内のエレメントをソートします。配列は、次に示す特性を備えている必要があります。

  • インデックス付き配列を対象とします。結合配列は対象外です。
  • 配列の各エレメントは、プロパティがあるオブジェクトを保持するものとします。
  • すべてのオブジェクトには共通のプロパティが少なくとも 1 つあるものとします。このようなプロパティをフィールドといいます。

fieldName パラメーターを複数指定する場合、先頭のフィールドが第 1 ソートフィールド、2 番目のフィールドが第 2 ソートフィールド、(以下同様)と見なされます。ソートは Unicode 値に基づいて実行されます。(ASCII は Unicode のサブセットです。)fieldName パラメーターで指定されたフィールドが、比較対象のいずれのエレメントにも含まれていない場合、そのフィールドは undefined に設定されていると見なされます。エレメントはソート済みの配列に連続的かつランダムに格納されます。

デフォルトでは、Array.sortOn() は次のように動作します。

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

Flash Player 7 では options パラメーターが追加されました。このパラメーターを使用すると、デフォルトのソート動作をオーバーライドすることができます。単純な配列(例えば、1 つのフィールドだけを持つ配列)をソートする場合、または options パラメーターでサポートされていないソート順序を指定する場合、Array.sort() を使用します。

複数のフラグを渡すには、ビット単位の論理和(OR)(|)演算子で区切ります。

     my_array.sortOn(someFieldName, Array.DESCENDING | Array.NUMERIC);
     

Flash Player 8 では、複数のフィールドでソートを行う場合に、各フィールドに対して異なるソートオプションを指定する機能が追加されました。Flash Player 8 以降では、options パラメーターはさまざまなソートオプションの配列を受け入れます。各ソートオプションは fieldName パラメーターのソートフィールドに対応します。次の例では、第 1 ソートフィールド a を降順で、第 2 ソートフィールド b を数値ソートで、第 3 ソートフィールド c を大文字と小文字を区別しないでソートします。

     Array.sortOn (["a", "b", "c"], [Array.DESCENDING, Array.NUMERIC, Array.CASEINSENSITIVE]);
     

注意:fieldName 配列と options 配列のエレメントは同数である必要があります。そうでない場合、options 配列は無視されます。また、Array.UNIQUESORT オプションと Array.RETURNINDEXEDARRAY オプションは、配列内の 1 番目のエレメントとしてのみ使用できます。そうでない場合、これらのオプションは無視されます。

パラメーター

fieldName:Object — ソート値として使用するフィールドを示すストリング、または、先頭のエレメントが第 1 ソートフィールド、2 番目が第 2 ソートフィールド(以下同様)を表す配列です。
 
options:Object (default = null)bitwise OR(|)演算子によって区切られた定義済み定数の数値または名前です。これによりソート動作を変更します。options パラメーターには次の値を指定できます。
  • Array.CASEINSENSITIVE または 1
  • Array.DESCENDING または 2
  • Array.UNIQUESORT または 4
  • Array.RETURNINDEXEDARRAY または 8
  • Array.NUMERIC または 16

数値形式(2)ではなく、ストリング形式のフラグ(DESCENDING など)を使用すると、コードヒントが有効になります。

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

関連する API エレメント


例  ( この例の使用方法 )

次のコードは、空の Array オブジェクト vegetables を作成し、次に push() を 5 回呼び出して配列を設定します。各 push() 呼び出しで、新しい Vegetable オブジェクトが、Vegetable() コンストラクターを呼び出すことで作成されます。このコンストラクターは、String(name)オブジェクトと Number(price)オブジェクトを受け取ります。次に示す値を使用して push() を 5 回呼び出すことで、配列は次のように設定されます。[lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44] . 次に sortOn() メソッドを name パラメーターと共に使用して、次の配列を作成します。[asparagus:3.99, celery:1.29, lettuce:1.49, spinach:1.89, squash:1.44] . 次に、price パラメーターと NUMERIC および DESCENDING 定数を使用して sortOn() メソッドを再度呼び出すと、次のように数値の降順でソートされた配列が作成されます。[asparagus:3.99, spinach:1.89, lettuce:1.49, squash:1.44, celery:1.29] .
var vegetables:Array = new Array();
vegetables.push(new Vegetable("lettuce", 1.49));
vegetables.push(new Vegetable("spinach", 1.89));
vegetables.push(new Vegetable("asparagus", 3.99));
vegetables.push(new Vegetable("celery", 1.29));
vegetables.push(new Vegetable("squash", 1.44));

trace(vegetables);
// lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44

vegetables.sortOn("name");
trace(vegetables);
// asparagus:3.99, celery:1.29, lettuce:1.49, spinach:1.89, squash:1.44

vegetables.sortOn("price", Array.NUMERIC | Array.DESCENDING);
trace(vegetables);
// asparagus:3.99, spinach:1.89, lettuce:1.49, squash:1.44, celery:1.29

class Vegetable {
    public var name:String;
    public var price:Number;

    public function Vegetable(name:String, price:Number) {
        this.name = name;
        this.price = price;
    }

    public function toString():String {
        return " " + name + ":" + price;
    }
}

次のコードは、空の Array オブジェクト records を作成し、次に push() を 3 回呼び出して配列を設定します。各 push() 呼び出しで、ストリングの namecity、および zip 番号を records に追加します。3 つの for ループを使用して配列エレメントを出力します。1 番目の for ループでは、エレメントが追加された順に出力されます。2 番目の for ループの前に、records は、sortOn() メソッドを使って name、city の順でソートされます。3 番目の for ループでは、異なる出力が作成されます。records は、city、name の順で再度ソートされているためです。

var records:Array = new Array();
records.push({name:"john", city:"omaha", zip:68144});
records.push({name:"john", city:"kansas city", zip:72345});
records.push({name:"bob", city:"omaha", zip:94010});

for(var i:uint = 0; i < records.length; i++) {
    trace(records[i].name + ", " + records[i].city);
}
// Results:
// john, omaha
// john, kansas city
// bob, omaha

trace("records.sortOn('name', 'city');");
records.sortOn(["name", "city"]);
for(var i:uint = 0; i < records.length; i++) {
    trace(records[i].name + ", " + records[i].city);
}
// Results:
// bob, omaha
// john, kansas city
// john, omaha

trace("records.sortOn('city', 'name');");
records.sortOn(["city", "name"]);
for(var i:uint = 0; i < records.length; i++) {
    trace(records[i].name + ", " + records[i].city);
}
// Results:
// john, kansas city
// bob, omaha
// john, omaha

次のコードは、空の Array オブジェクト users を作成し、次に push() を 4 回呼び出して配列を設定します。各 push() 呼び出しで User() コンストラクターを使って User オブジェクトを作成し、name ストリング、age uint を各ユーザーに追加します。結果として、配列は [Bob:3,barb:35,abcd:3,catchy:4] のように設定されます。

次に、配列を次のようにソートします。

  1. name のみでソートすると、配列は [Bob:3,abcd:3,barb:35,catchy:4] のようになります
  2. CASEINSENSITIVE 定数を使って name でソートすると、配列は [abcd:3,barb:35,Bob:3,catchy:4] のようになります
  3. CASEINSENSITIVE 定数と DESCENDING 定数を使って name でソートすると、配列は [catchy:4,Bob:3,barb:35,abcd:3] のようになります
  4. age のみでソートすると、配列は [abcd:3,Bob:3,barb:35,catchy:4] のようになります。
  5. NUMERIC 定数を使って age でソートすると、配列は [Bob:3,abcd:3,catchy:4,barb:35] のようになります
  6. DESCENDING 定数と NUMERIC 定数を使って age でソートすると、配列は [barb:35,catchy:4,Bob:3,abcd:3] のようになります

indices という配列を作成し、NUMERIC 定数と RETURNINDEXEDARRAY 定数を使って age でソートした結果をその配列に割り当てます。配列は [Bob:3,abcd:3,catchy:4,barb:35] のように設定されます。次に、for ループを使って配列を出力します。

class User {
    public var name:String;
    public var age:Number;
    public function User(name:String, age:uint) {
        this.name = name;
        this.age = age;
    }

    public function toString():String {
        return this.name + ":" + this.age;
    }
}

var users:Array = new Array();
users.push(new User("Bob", 3));
users.push(new User("barb", 35));
users.push(new User("abcd", 3));
users.push(new User("catchy", 4));

trace(users); // Bob:3,barb:35,abcd:3,catchy:4

users.sortOn("name");
trace(users); // Bob:3,abcd:3,barb:35,catchy:4

users.sortOn("name", Array.CASEINSENSITIVE);
trace(users); // abcd:3,barb:35,Bob:3,catchy:4

users.sortOn("name", Array.CASEINSENSITIVE | Array.DESCENDING);
trace(users); // catchy:4,Bob:3,barb:35,abcd:3

users.sortOn("age");
trace(users); // abcd:3,Bob:3,barb:35,catchy:4

users.sortOn("age", Array.NUMERIC);
trace(users); // Bob:3,abcd:3,catchy:4,barb:35

users.sortOn("age", Array.DESCENDING | Array.NUMERIC);
trace(users); // barb:35,catchy:4,Bob:3,abcd:3

var indices:Array = users.sortOn("age", Array.NUMERIC | Array.RETURNINDEXEDARRAY);
var index:uint;
for(var i:uint = 0; i < indices.length; i++) {
    index = indices[i];
    trace(users[index].name, ": " + users[index].age);
}

// Results:
// Bob : 3
// abcd : 3
// catchy : 4
// barb : 35

splice

()メソッド 
AS3 function splice(startIndex:int, deleteCount:uint, ... values):Array

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

配列のエレメントを追加および削除します。このメソッドは、コピーを作成しないで、配列を変更します。

注意:Array のサブクラス内でこのメソッドをオーバーライドするには、次の例に示すように、パラメーターに ...args を使用します。

     public override function splice(...args) {
       // your statements here
     }
     

パラメーター

startIndex:int — 挿入または削除を開始する配列エレメントのインデックスを示す整数です。負の整数を使用すると、配列の末尾を基準として位置を指定できます。例えば、-1 は配列の最後のエレメントです。
 
deleteCount:uint — 削除するエレメント数を示す整数です。この数には、startIndex パラメーターで指定するエレメントが含まれます。deleteCount パラメーターに値を指定しないと、配列内の startIndex の位置のエレメントから最後のエレメントまで、すべての値が削除されます。値として 0 を指定すると、エレメントは削除されません。
 
... valuesstartIndex パラメーターで指定した配列内の位置に挿入するカンマ区切り値のオプションリストです。挿入される値が配列型の場合、配列はそのまま単一のエレメントとして挿入されます。例えば、既存の長さ 3 の配列に別の長さ 3 の配列を結合すると、結果の配列には 4 つのエレメントしかありません。ただし、このエレメントの 1 つは、長さ 3 の配列になります。

戻り値
Array — 元の配列から削除されたエレメントを含む配列です。

例  ( この例の使用方法 )

次のコードは、Array オブジェクト vegetables を作成し、エレメント [spinach, green pepper, cilantro, onion, avocado] を設定します。次に splice() メソッドを、パラメーター 2 と 2 を使用して呼び出します。これにより、cilantroonionspliced 配列に割り当てられます。vegetables 配列には [spinach,green pepper,avocado] が含まれています。再度、splice() メソッドを、パラメーター 1、0、spliced 配列を使って呼び出すと、[cilantro,onion]vegetables の 2 番目のエレメントとして割り当てられます。
var vegetables:Array = new Array("spinach",
                 "green pepper",
                 "cilantro",
                 "onion",
                 "avocado");

var spliced:Array = vegetables.splice(2, 2);
trace(vegetables); // spinach,green pepper,avocado
trace(spliced);    // cilantro,onion

vegetables.splice(1, 0, spliced);
trace(vegetables); // spinach,cilantro,onion,green pepper,avocado


cilantroonion がトレースされるので、vegetables のエレメントは 5 個あるかのように処理されますが、実際のエレメント数は 4 個で、2 番目のエレメントは 2 エレメントを含む別の配列です。cilantroonion を個別に追加するには、次のように指定します。
 
var vegetables:Array = new Array("spinach",
                 "green pepper",
                 "cilantro",
                 "onion",
                 "avocado");
 
 var spliced:Array = vegetables.splice(2, 2);
 trace(vegetables); // spinach,green pepper,avocado
 trace(spliced);    // cilantro,onion
 
 vegetables.splice(1, 0, "cilantro", "onion");
 trace(vegetables); // spinach,cilantro,onion,green pepper,avocado

toLocaleString

()メソッド 
public function toLocaleString():String

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

指定された配列内のエレメントを表すストリングを返します。インデックス 0 から最大インデックスまでの配列内のすべてのエレメントを、カンマで区切られた連結ストリングに変換して返します。ActionScript 3.0 実装において、このメソッドは、Array.toString() と同じ値を返します。

戻り値
String — 配列エレメントのストリングです。

関連する API エレメント

toString

()メソッド 
public function toString():String

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

指定された配列内のエレメントを表すストリングを返します。インデックス 0 から最大インデックスまでの配列内のすべてのエレメントを、カンマで区切られた連結ストリングに変換して返します。カスタムセパレーターを指定するには、Array.join() メソッドを使用します。

戻り値
String — 配列エレメントのストリングです。

関連する API エレメント


例  ( この例の使用方法 )

次のコードでは、Array を作成し、値をストリングに変換して、それらを String データ型の vegnums 変数に格納します。
var vegetables:Array = new Array();
vegetables.push(1);
vegetables.push(2);
vegetables.push(3);
vegetables.push(4);
vegetables.push(5);
var vegnums:String = vegetables.toString();
trace(vegnums+",6");
// 1,2,3,4,5,6

unshift

()メソッド 
AS3 function unshift(... args):uint

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

エレメントを配列の先頭に追加して、配列の新しい長さを返します。配列内の他のエレメントは、元の位置 i から i+1 に移動されます。

パラメーター

... args — 配列の先頭に挿入される数値、エレメント、または変数です。

戻り値
uint — 配列の新しい長さを表す整数です。

関連する API エレメント


例  ( この例の使用方法 )

次のコードは、空の Array オブジェクト names を作成します。ストリングの BillJeff を、push() メソッドを使って追加し、次にストリングの AlfredKyle を、names の先頭に、unshift() メソッドを 2 回呼び出して追加します。
var names:Array = new Array();
names.push("Bill");
names.push("Jeff");

trace(names); // Bill,Jeff

names.unshift("Alfred");
names.unshift("Kyle");

trace(names); // Kyle,Alfred,Bill,Jeff
定数の詳細

CASEINSENSITIVE

定数
public static const CASEINSENSITIVE:uint = 1

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

Array クラスのソートメソッドに対して、大文字と小文字を区別しないソートを指定します。この定数は、options パラメーター(sort() メソッドまたは sortOn() メソッド)に使用できます。

この定数の値は 1 です。

関連する API エレメント

DESCENDING

定数 
public static const DESCENDING:uint = 2

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

Array クラスのソートメソッドに対して、降順でのソートを指定します。この定数は、options パラメーター(sort() メソッドまたは sortOn() メソッド)に使用できます。

この定数の値は 2 です。

関連する API エレメント

NUMERIC

定数 
public static const NUMERIC:uint = 16

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

Array クラスのソートメソッドに対して、文字ストリングではなく数値によるソートを指定します。この定数を options パラメーターに設定すると、sort() メソッドと sortOn() メソッドは、数字を文字ストリングとしてではなく、数値としてソートします。NUMERIC 定数を設定しないでソートを実行すると、各配列エレメントは文字ストリングとして処理され、Unicode 順でソートされます。

例えば、値 [2005, 7, 35] の配列で、NUMERIC 定数を設定せずに options パラメーターを使った場合、ソート後の配列は [2005, 35, 7] となります。一方、NUMERIC 定数を設定した場合、ソート後の配列は [7, 35, 2005] となります。

この定数は、配列内の数値に対してのみ適用されます。["23", "5"] などの、数値データを含むストリングには適用されません。

この定数の値は 16 です。

関連する API エレメント

RETURNINDEXEDARRAY

定数 
public static const RETURNINDEXEDARRAY:uint = 8

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

ソート結果として、配列インデックスで構成される配列を返すことを指定します。この定数を options パラメーター(sort() メソッドまたは sortOn() メソッド)に使用すると、元の配列を変更せずに、配列エレメントの複数のビューにアクセスすることができます。

この定数の値は 8 です。

関連する API エレメント

UNIQUESORT

定数 
public static const UNIQUESORT:uint = 4

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

Array クラスのソートメソッドに対して、一意性ソート要件を指定します。この定数は、options パラメーター(sort() メソッドまたは sortOn() メソッド)に使用できます。一意性ソートオプションを指定すると、ソート対象の任意の 2 つのエレメントまたはフィールドが同じ値である場合に、ソートが終了します。

この定数の値は 4 です。

関連する API エレメント

ArrayExample.as

次の例では、引数がなくエレメント数 0 個の新しい Array オブジェクト myArr を作成します。
package {
    import flash.display.Sprite;

    public class ArrayExample extends Sprite {
        public function ArrayExample() {
            var myArr:Array = new Array();
            trace(myArr.length); // 0
        }
    }
}




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

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