配列の要素がオブジェクトのとき、オブジェクトの値でソートする sortOn()
配列に入っている値がオブジェクトの場合、sortOn() を使用すればオブジェクトのプロパティ値でオブジェクトを並び替えることができる。並び替えるキーになるプロパティは全てのオブジェクトで共通のプロパティである必要がある。この共通プロパティのことをフィールドと呼ぶ。
var goods:Array = new Array();
goods.push({id:"bee", price:210});
goods.push({id:"xox", price:100});
goods.push({id:"zizi", price:280});
goods.push({id:"abic", price:180});
goods.sortOn("price", Array.NUMERIC); for (var i:uint = 0; i < goods.length; i++) {
trace (goods[i].id, goods[i].price);
}
出力結果
xox 100
abic 180
bee 210
zizi 280
複数のソートキーを指定したい場合、キーを["color", "price"]のように配列で指定する。降順といったオプションを指定したい場合、オプションを配列にして第二引数で指定する。このとき、ソートキーの個数とオプションの個数が同じでなくてはならない。文字順を指定したい場合のオプションは0である。
var goods:Array = new Array();
goods.push({id:"be10", price:210, color:"red"});
goods.push({id:"xo02", price:100, color:"blue"});
goods.push({id:"zic9", price:290, color:"red"});
goods.push({id:"abi50", price:180, color:"blue"});
goods.push({id:"abi49", price:280, color:"red"});
goods.push({id:"abi51", price:150, color:"blue"});
goods.sortOn(["color", "price"], [0, Array.NUMERIC]); for (var i:uint = 0; i < goods.length; i++) {
trace(goods[i].id, goods[i].price, goods[i].color);
}
出力結果
xo02 100 blue
abi51 150 blue
abi50 180 blue
be10 210 red
abi49 280 red
zic 290 red
以下の例は並び替えオプションのArray.RETURNINDEXEDARRAY (8) を使った例である。並び替えた場合の結果のインデックス番号に基づいて値を取り出している。元の配列を並び替えたくない場合にこのオプションを利用する。Array.RETURNINDEXEDARRAY は1番目のキーにのみ利用出来るオプションである。価格は数値で降順になるように Array.DESCENDING (2) のオプションを追加している。
var goods:Array = new Array();
goods.push({id:"be10", price:210, color:"red"});
goods.push({id:"xo02", price:100, color:"blue"});
goods.push({id:"zic9", price:290, color:"red"});
goods.push({id:"abi50", price:180, color:"blue"});
goods.push({id:"abi49", price:280, color:"red"});
goods.push({id:"abi51", price:150, color:"blue"});var indexlist:Array = goods.sortOn(["color", "price"], [0|8, 16|2]);
for (var i:uint = 0; i < goods.length; i++) {
var index:uint;
index = indexlist[i];
trace (goods[index].id, goods[index].price, goods[index].color;
}
出力結果
abi50 180 blue
abi51 150 blue
xo02 100 blue
zic9 290 red
abi49 280 red
be10 210 red
索引
- オブジェクトとクラス
- コメント
- parent
- ステートメントの区切りと改行
- 大文字と小文字
- 変数
- 定数
- グローバル定数
- クラスの静的パブリック定数
- エスケープシーケンス
- 関数とメソッドの違い
- 「予約語」と「キーワード」
- 変数の型
- グローバル関数
- arguments オブジェクト
- ...(rest)パラメータ
- データ型のチェック:is、as、typeof
- ストリングを数値に変換
- 数値をストリングに変換する
- Application オブジェクトについて
- Document オブジェクトについて
- データ型の変換(キャスト)
- プリインクリメント、ポストインクリメント、プリデクリメント、ポストデクリメント
- 比較演算子
- 論理演算子
- ビット単位演算子(ビット演算子)
- XML演算子
- その他の演算子
- 三項演算子
- 「::」名前空間識別演算子
- 「[]」
- 「{}」
- 配列アクセス演算子「[]」
- 多次元配列
- Arrayクラスを使う
- 配列の値の個数を調べる length
- 配列の先頭/末尾に値を追加する/抜き取る:push() pop() unshift() shift()
- Spriteクラスに図形を描画する
- 配列の一部を切り出す slice(), splice()
- 配列を複製する slice()
- 配列を連結する concat()
- 配列を検索する indexOf() lastIndexOf()
- 配列の値を逆順に並べ替える reverse()
- 配列の値の並びをソートする sort()
- 配列を関数の結果でソートする
- 配列の要素がオブジェクトのとき、オブジェクトの値でソートする sortOn()
- 配列の値をストリングに変換する toString() join()
- 配列の値をチェックする some() every()
- 配列にフィルタをかけて新しい配列を作る filter()
- 配列の値を指定の関数で変換する map()
- 配列の値を使って指定のメソッドを実行する forEach()
- 配列のインデックスを順に取り出す
- インデックス番号やプロパティ名を順に取り出す for .. in
- 値を順に取り出す for each .. in
- グローバル座標、ローカル座標
- マウスの座標
- MouseEventクラスのイベント通知からマウスのローカル座標を取得する
- 点を扱う Pointクラス
- ベクトルの加算減算 add()、subtract()、distance()、equals()
- ベクトルの向きと大きさ interpolate()
- ベクトルの向きと大きさ normalize()
- ベクトルの向きと大きさ polar()
- 短形領域を扱う Rectangleクラス
- 短形領域の加算 union()
- 短形領域の減算 intersection()
- 短形領域の伸縮 inflate()、inflatePoint()
- 短形領域の衝突 containsPoint()、containsRect()、intersects()

