および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
必要な方法で並べ替える必要があります。
ここで実際の例を参照してください。
詳細については、ドキュメントを参照してください