AS3 配列の中身がobject型の時 objectの値をもとにsortOnする
- 時間:2009年10月21日 13:48
-
delicious に登録
-
はてブに登録
- トラックバック:(0)
- コメント:(0)
配列の中身をある値を元に並べ替えたい時などに使用
使いどころは例えば3DなどでZソートの時などその他もろもろ使えます。
配列.sortOn("値", Array.CASEINSENSITIVE | Array.NUMERIC);
一行でいけます。便利。
- Array.CASEINSENSITIVE(昇順)
- Array.DESCENDING(降順)

きちんと並べ替えられています。good!
【asソース】
package {
import flash.display.Sprite;
public class Sample20090617 extends Sprite {
private var _len:uint = 5;
private var _idArr:Array = [5, 3, 1, 2, 4];
private var _nameArr:Array = ["satoken", "web", "hoge", "as3", "flash"];
private var _objArr:Array = new Array();
public function Sample20090617():void {
init();
}
private function init():void {
for (var i:uint = 0; i < _len; i++) {
var _obj:Object = new Object();
_objArr.push(_obj);
_obj.name = _nameArr[i];
_obj.id = _idArr[i];
}
/*
* trace用
*/
trace("sortOn前の配列の並び");
trace("■■■■■■■■■■■■■■■■■");
for (var i:uint = 0; i < _len; i++) {
var _obj:Object = _objArr[i];
trace(_obj.id,_obj.name);
}
trace("-------------------------------------");
/*
* CASEINSENSITIVE
* DESCENDING
* で昇順・降順変更
*/
_objArr.sortOn("id", Array.CASEINSENSITIVE | Array.NUMERIC);
/*
* trace用
*/
trace("sortOn後の配列の並び");
trace("■■■■■■■■■■■■■■■■■");
for (var i:uint = 0; i < _len; i++) {
var _obj:Object = _objArr[i];
trace(_obj.id,_obj.name);
}
}
}
}
AS3 配列の中身がobject型の時 objectの値をもとにsortOnするに対してコメントをする