[AS3]sortOn()を使って複数条件で配列をソート

Posted 2012年2月24日 | Auther dada | Category PC・デジタル | Tag タグ: ,
Twitterにツイートする Facebookでシェアする はてなブックマーク

ActionScript3でオブジェクトを複数条件ソートする時のメモ。
sortOn() を使うと一発でできるのでラクチンです。

しかし条件の指定をちょっと変えると結果が全然違ってくるので注意です。
下の例では全て「y」「x」の順にソートしています。

var list:Array = [ 
  new Point(5, 5),
  new Point(0, 10),
  new Point(10, 10),
  new Point(10, 0)
];

list.sortOn( ["y", "x"] );
// 文字列比較で小さい順に並べている。文字列だから「10<5」になる。
// (x=10, y=0),(x=0, y=10),(x=10, y=10),(x=5, y=5)

list.sortOn( ["y", "x"], Array.DESCENDING );
// 降順ソート。こちらも文字列だから「10<5」になる。
// (x=5, y=5),(x=10, y=10),(x=0, y=10),(x=10, y=0)

list.sortOn( ["y", "x"], [Array.NUMERIC, Array.NUMERIC] );
// どちらも数値としてソート
// (x=10, y=0),(x=5, y=5),(x=0, y=10),(x=10, y=10)

list.sortOn( ["y", "x"], [Array.DESCENDING | Array.NUMERIC, Array.NUMERIC] );
// 「y」は「数値で降順」、「x」は「数値で昇順」
// (x=0, y=10),(x=10, y=10),(x=5, y=5),(x=10, y=0)

list.sortOn( ["y", "x"], [Array.DESCENDING|Array.NUMERIC, Array.DESCENDING|Array.NUMERIC] );
// どちらも「数値で降順」
// (x=10, y=10),(x=0, y=10),(x=5, y=5),(x=10, y=0)			
Array.CASEINSENSITIVE 大文字と小文字を区別しないソート
Array.DESCENDING 降順のソート順
Array.UNIQUESORT 一意性ソート要件
Array.RETURNINDEXEDARRAY sort() メソッドまたは sortOn() メソッドの呼び出し結果としてインデックス付き配列を返す
Array.NUMERIC 数値によるソート

Array.UNIQUESORT はちょっと特殊で、ソート対象に同じ値が混ざっていないかチェックします。
同じ値が混ざっている場合は並び替えをせず「0」を返します。

関連する記事

No Comments »

No comments yet.

Leave a comment

カテゴリー