配列の値をソートする場合、sort() と sortOn() を使う。sort() は引数を指定することで昇順、降順、同じ値が混ざっていないかなどをチェック出来る。
sort() は値をストリングで判断し Unicodeに基づいて昇順に並べる。アルファベットの大文字小文字を区別せずに並べたい場合、引数で指示するオプションに1またはArray.CASEINSENSITIVEを指定する。
var vlist:Array = new Array("blue", "red", "YELLOW", "black", "BROWN");
trace (vlist.sort());
// 出力: BROWN, YELLOW, black, blue, red
trace (vlist.sort(Array.CASEINSENSITIVE));
// 出力: black, blue, BROWN, red, YELLOW
降順に並べるには、オプションに2または Array.DESCENDING を指定する。大文字小文字を区別せずに降順に並ぶようにするには、sort(1|2) のように論理和の演算子「|」を使って複数のオプションを指定する。
var vlist:Array = new Array("blue", "red", "YELLOW", "black", "BROWN");
trace (vlist.sort(Array.DESCENDING));
// 出力: red, blue, black, YELLOW, BROWN
trace (vlist.sort(1|2));
// 出力: YELLOW, red, BROWN, blue, black
オプションに4または Array.UNIQUESORT を指定すると、配列をソートする前に配列に同じ値が混ざっていないかどうかをチェックできる。同じ値が混ざっている場合、値の並び替えを行わず戻り値に0を返す。
以下の例では、"red"と"RED"が含まれている。大文字小文字を区別せずソートする指定なら同じ値が含まれていないと判断されるが、sort(1|4) のように大文字小文字を区別しないオプションを加えると"red"と"RED"は同じ値とみなされ、並べ替えは実行されず戻り値に0が返る。
var vlist:Array = new Array("blue", "red", "YELLOW", "black", "RED");
trace (vlist.sort(Array.UNIQUESORT));
// 出力: RED, YELLOW, black, blue, red
trace (vlist.sort(1|4);
// 出力: 0
値を数値として並べるにはオプションに16または Array.NUMERIC を指定する必要がある。数値として並べない場合、「10」と「9」では「10」の方が小さな値になる。sort(16|2) のようにすれば数値を降順、つまり大きな数値から順に並べる。
var vlist:Array = new Array(10, 1, 6, 9, 5);
trace (vlist.sort());
// 出力: 1, 10, 5, 6, 9
trace (vlist.sort(Array.NUMERIC));
// 出力: 1, 5, 6, 9, 10
trace (vlist.sort(16|2));
// 出力: 10, 9, 6, 5, 1
配列に対して sort() を実行すると元の配列の値の並びを変更するが、オプションに8またはArray.RETURNINDEXEDARRAY を指定した場合、もとの値の並びを変更せず、値を並び替えるとどうなるかを値のインデックスの配列で返す。
var colorList:Array = new Array("blue", "red", "black");
trace (colorlist.sort(1|8));
// 出力: 2, 0, 1
メンバー名簿 memberlist と得点表 pointlist があるとする。名簿から得点のベスト3を選びたいという場合、pointlistをソートすれば得点順でポイントを並べることができるが、誰がどの得点なのかわからなくなってしまう。そういった場合、pointlistをソートした場合のインデックス番号の並びのrankingリストを作り、rankingリストを使いmemberlistからベスト3のメンバーを取り出す。
var memberlist:Array = new Array("佐藤", "高橋", "坂本", "野村", "青木");
var pointlist:Array = new Array(18, 15, 9, 10, 21);
var ranking:Array = pointlist.sort(2|16|8); // 降順、数値、インデックス
var top3:Array = new Array();
top3.push(memberlist[ranking[0]]);
top3.push(memberlist[ranking[1]]);
top3.push(memberlist[ranking[2]]);
trace (top3);
// 出力: 青木, 佐藤, 高橋
- オブジェクトとクラス
- コメント
- 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()

