およびArrayジェネリックコレクションはどちらも、関数を受け取るメソッドVector.<>の代替形式を提供します。.sort()独自の並べ替えの実装を提供できます。この場合、オブジェクトをピークして、それらの特定の部分のみを比較します。
次のクラスを検討してください。
class TableData {
public var ID:String;
public function TableData(id:String):void {
this.ID = id;
}
}
TableDataこれは、クラスの単純化されたバージョンであり、 ID. 次に、単純化されたTableクラス:
class Table {
private var _data:TableData;
public function get data():TableData {
return _data;
}
public function Table(tableData:TableData) {
_data = tableData;
}
}
最後に、それらを使用して、新しいコレクションを作成しましょう。
var list:Vector.<Table> = new Vector.<Table>();
list.push(new Table(new TableData("X")));
list.push(new Table(new TableData("C")));
list.push(new Table(new TableData("S")));
list.push(new Table(new TableData("A")));
ここで、実際に比較を行う新しい関数を作成する必要があります。
private function sortUsingDataID(a:Table, b:Table):int {
var aID:String = a.data.ID;
var bID:String = b.data.ID;
return aID < bID ? aID == bID ? 0 : -1 : 1;
}
この関数は 2 つの項目を取得することを想定しており-1、 、0、または のいずれかを返す必要があり1ます。a前に来る必要がある場合b、関数は を返す必要があり-1ます。それ以外の場合、 のa後に来る必要がある場合はb、 を返す必要があり1ます。最後に、2 つが同じ場合は、値 を返す必要があります0。
.sortしたがって、関数を呼び出して渡すことにより、カスタムの並べ替え関数を使用して、配列自体に再分類するように指示する必要があります。
list.sort(sortUsingDataID);
これで、list必要な方法で並べ替える必要があります。
ここで実際の例を参照してください。
詳細については、ドキュメントを参照してください