Flash / ActionScript プログラムに関する各種メモ書き

AS3 でオブジェクトを複数の条件でソートする

AS3 でオブジェクト(ハッシュの配列)を複数の条件でソートするには sortOn メソッドを使用します。

以下サンプル

var i:Number,j:Number;
var hoge_array:Array=new Array();
var D:Object = new Object();
hoge_array = [
	{
		id:10,
		title:'aiueo',
		text:'あいうえお'
	} ,
	{
		id:10,
		title:'kakikukeko',
		text:'かきくけこ'
	} ,
	{
		id:3,
		title:'sasisuseso',
		text:'さしすせそ'
	} ,
	{
		id:99999,
		title:'tatituteto',
		text:'たちつてと'
	} ,
	{
		id:3,
		title:'naninuneno',
		text:'漢字'
	} ,
];
// ダンプ関数(AS3標準関数ではありません。)
D = new dumper3( hoge_array );
// 1(カラムidを 数値評価、降順ソート) 2(カラムtitleを 文字列評価、昇順ソート)
hoge_array.sortOn(["id","title"],[Array.DESCENDING|Array.NUMERIC,null]);
// 下記の通りにすると正しくソートされない。(文字列昇順ソートの時はnullを渡す必要がある。)
//hoge_array.sortOn(["id","title"],[Array.DESCENDING|Array.NUMERIC,]);
D = new dumper3( hoge_array );

結果

----------------------------------- ↓
0 : (object)
        id : (number) : 99999
        text : (string) : たちつてと
        title : (string) : tatituteto
1 : (object)
        id : (number) : 10
        text : (string) : あいうえお
        title : (string) : aiueo
2 : (object)
        id : (number) : 10
        text : (string) : かきくけこ
        title : (string) : kakikukeko
3 : (object)
        id : (number) : 3
        text : (string) : 漢字
        title : (string) : naninuneno
4 : (object)
        id : (number) : 3
        text : (string) : さしすせそ
        title : (string) : sasisuseso
----------------------------------- ↑
// sortOn パラメーター一覧
// Array.CASEINSENSITIVE 大文字と小文字を区別しない
// Array.DESCENDING    下向き(降順)
// Array.NUMERIC     数値評価
// Array.RETURNINDEXEDARRAY 
// メソッドを実行した配列をソートせずに、ソート結果として配列を返す。
// Array.UNIQUESORT
//オプションに4またはArray.UNIQUESORTを指定すると、配列をソートする前に配列に同じ値が混ざっていないかどうかをチェックできます。同じ値が混ざっている場合は値の並び替えを行わずに0を返します。

関連エントリー

No.656
09/02 15:45

edit

ActionScript3.0