Vector クラスとは?
■Vectorクラスについて
ベクタークラスは、配列用のクラスです。
配列といえばすでに Array 型が存在しますが、これとどう違うのかが気になります。
■Array クラスと Vector クラスの違い
Array型は、「好きな番地」に「好きな型のデータ」を格納する事ができますが
Vector型はすべての番地に「同じ型のデータ」しか格納できません。
また、Array型は、「マイナスの番地」や「いきなり大きい番地」にデータを格納する事ができますが、
Vector型では 0 番地から 1 ずつ順番に格納しないとエラーとなります。
そして、Array 型より Vector 型のほうが高速に動作します。
すべての配列に同じ型のデータが格納されるのであれば Vector 型を使うと高速に動作してお得となります。
Array 型と Vector 型は、基本的に同じようなメソッドを使用する事ができます。
Vector クラスのベース型を宣言する
■Vector クラスのベース型を宣言する
Vector に格納する型の事をベース型といいます。
このベース型を指定するには、「後置型パラメータシンタックス」を使用します。
「後置型パラメータシンタックス」は以下のように記述します。
後置型パラメータシンタックスの記述方法
Vector.< 型名 >
Vectorオブジェクトの作成例です。
Boolean型のデータを格納するための Vector オブジェクトを作成する
var vector : Vector.< Boolean > = new Vector.< Boolean >();
vector[0] = true;
vector[1] = false;
vector[2] = true;
String 型のデータを格納するための Vector オブジェクトを作成する
var vector : Vector.< String > = new Vector.< String >();
vector[0] = "abc";
vector[1] = "def";
vector[2] = "ghi";
DisplayObject 型のデータを格納するための Vector オブジェクトを作成する
var vector : Vector.< DisplayObject > = new Vector.< DisplayObject >();
vector[0] = new Sprite();
vector[1] = new MovieClip();
■初期データを格納しつつ Vector オブジェクトを作成する
Vector() 関数を使うと、初期データを格納しつつ Vector オブジェクトを作成する事が可能です。
引数に Array オブジェクトか Vector オブジェクトを渡します。
Vector オブジェクトを作成しつつ Number 型のデータを格納する
var vector : Vector.< Number > = Vector.< Number >([0,123,456]);
■特殊な Vector オブジェクトの作成方法(Adobe Flash CS5 以降)
「Flash CS5」、「Flash Builder 4」、「Flex 4」以降であれば、
初期データを格納しつつ Vector オブジェクトを作成する、以下のような記述が可能です。
構文を使って Vector オブジェクトを作成する
var vector : Vector.< Number > = new .< Number >[0,123,456];
Vector クラスのメソッドについて
■Vector クラスのメソッド一覧
Vector クラスには、以下のメソッドが存在します。
| メソッド | 説明 |
| concat() | 配列同士をつなげる。 |
| shift() | 配列の先頭のデータを削除して結果を返す。 |
| unshift() | 配列の先頭にデータを追加して長さを返す。 |
| pop() | 配列の最後のデータを削除して返す。 |
| push() | 配列の最後にデータを追加して長さを返す。 |
| slice() | 配列の?番目から?番目を配列として返す。 |
| splice() | 配列の?番目から?個を削除して1つの値を追加する。 |
| sort() | 配列をソートする。 |
| reverse() | 配列の順番を逆にする。 |
| join() | 配列データの間に文字を挟みすべて繋げてストリングにして返す。 |
| toString() | 配列データをすべて繋げてストリングにして返す。 |
| every() | コールバック関数から該当するデータを調べる。 |
| forEach() | コールバック関数からすべてのデータを調べる。 |
| filter() | コールバック関数からデータを抽出し新しい配列を作成する。 |
例) 配列をつなげて新しい配列を作成する。
var a = Vector.< Number >([1 ,2 ,3 ]);
var b = Vector.< Number >([4 ,5 ,6 ]);
var c = Vector.< Number >([7 ,8 ,9 ]);
var d = Vector.< Number >([10,11,12]);
var e = a.concat(b,c,d);
例) 配列の先頭のデータを削除して削除したデータを返す
var a = Vector.< String >(["A" ,"B" ,"C" ,"D" ,"E"]);
var b = a.shift();
例) 配列の先頭に"D","E","F"を追加して長さを返す
var a = Vector.< String >(["A" ,"B" ,"C"]);
var b = a.unshift("D" ,"E" ,"F");
例) 配列の最後を削除して削除したデータを返す。
var a = Vector.< String >(["A" ,"B" ,"C" ,"D"]);
var b = a.pop();
例) 配列の最後に"D","E","F"を追加して長さを返す
var a = Vector.< String >(["A" ,"B" ,"C"]);
var b = a.push("D" ,"E" ,"F");
例) 配列の1番目から3番目を新しい配列として返す
var a = Vector.< String >(["A" ,"B" ,"C" , "D" ,"E" ,"F"]);
var b = a.slice(1, 4);
例) 配列の1番目から3個分削除してその間に"G","H","I"を追加する
var a = Vector.< String >(["A" ,"B" ,"C" , "D" ,"E" ,"F"]);
var b = a.splice(1, 3 ,"G","H","I");
例) 配列をソートする。
var a = Vector.< Number >([2, 4, 1, 3, 0]);
// ソート用コールバック関数
var func = function(a,b){
if(a == b) return 0; // 第01引数と第02引数が等しいなら 0 を返す
if(a > b) return 1; // 第01引数が後に来るなら正を返す
return -1; // 第02引数が後に来るなら負を返す
}
a.sort(func);
例) 配列の順番を逆にする。
var a = Vector.< Number >([0, 1, 2, 3, 4]);
a.reverse();
例) 配列の各番地のデータに文字を挟んで繋げて1つの文字列として返す。
var a = Vector.< Number >([0, 1, 2, 3, 4]);
var b = a.join("-");
例) 配列の各番地のデータに","を挟んで繋げて1つの文字列として返す。
var a = Vector.< Number >([0, 1, 2, 3, 4]);
var b = a.toString();
例) 配列のデータに該当するデータがあるか調べる。
var a = Vector.< Number >([0, 1, -2, 3, 4]);
// 検索用コールバック関数
var func = function(item,id,v){
if(item < 0){
// 該当するデータが見つかり検索を終了するなら false を返す
return false;
}
// 継続して調べるなら true を返す
return true;
}
var b = a.every(func);
例) 配列のデータをすべて調べる。
var a = Vector.< Number >([0, 1, -2, 3, 4]);
// 検索用コールバック関数
var func = function(item,id,v){
trace(id,item);
}
var b = a.forEach(func);
例) 配列のデータから該当するデータを抽出して新しい配列を作成する。
var a = Vector.< Number >([0, 1, -2, 3, -4]);
// 抽出用コールバック関数
var func = function(item,id,v){
if(item < 0){
// 抽出したいデータであれば true を返す
return true;
}
// 抽出しなくないデータであれば false を返す
return false;
}
var b = a.filter(func);
■Vector クラスのプロパティ
Vector クラスは、以下のプロパティが使用できます。
| プロパティ | 説明 |
| length | 配列が使用している番地の数。 |
例) 配列の数を調べる
var a = Vector.< Number >([0, 1, 2, 3, 4]);
var num = a.length;
