さりげない機能強化
スクリプターな人たちの間では FlashPlayer8 の新機能としてビットマップばかりに目が行きがちですが、実はこっそりと機能強化されているメソッドがあります。
Array.sortOn
これは配列の要素同士を比較してソートするのではなく、配列の要素が持つ特定のプロパティ同士を比較してソートするのですが、これを使う時って他のプロパティ同士も比較してほしいことが多々あります。
たとえば、値段でソートをしたけれど同じ値段の場合はさらにサイズでソートされていてほしいとか。
FlashPlayer7 ではプロパティを配列で渡せば多段階ソートできたのですが、一方を昇順で他方を降順なんて都合のいいソートはできませんでした。
プロパティ price と size を持つオブジェクトを要素に持つ配列 arr に対して値段(price)の昇順でソートし、さらに同じ値段の場合にはサイズ(size)の降順でソートしたい場合は
arr.sortOn( ["price", "size"], [ Array.NUMERIC, Array.NUMERIC | Array.DESCENDING ] );
となります。
つまり、ソート条件も配列で渡せるようになっていると。
ヘルプにもしっかり書いてあるわけで今さら感はありますが、言及している人がいなかったので実はあまり知られていないんじゃないかと思いエントリにしてみましたー
探せば他にもこういうのあるかもしれない?


