無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

配列をソートするサンプル

配列をソートするAPIとして、Array#sortArray#sortOnが提供されています。

Array#sort

配列の要素をソートします。

  • 引数で比較関数(第一引数)とオプション(第二引数)が指定できます。
    • 比較関数を指定することで、任意のロジックに基づくソートが可能です。
    • オプションでソート方向や、比較形式(数値で比較する)を指定できます。
  • 引数を指定しない場合、文字列としてソートされます。
var array:Array = [ 1, 21, 5, 3, 10 ];

// オプションなしでソート
// 各値は文字列としてソートされる。("10"と"5"だと"5"の方が後)
array.sort();
log( array.join(",") ); // 1,10,21,3,5

// オプションを指定
// 数値としてソート("10"と"5"だと"10"の方が後)
array.sort(Array.NUMERIC);
log( array.join(",") ); // 1,3,5,10,21

// 数値として&逆順にソート
array.sort(Array.NUMERIC|Array.DESCENDING);
log( array.join(",") ); // 21,10,5,3,1

// 関数でソート順を指定することも可能。
array.sort( function(a:*,b:*):int {
  return a%10 - b%10
} );
log( array.join(",") ); // 10,21,1,3,5

// 関数+オプション
array.sort( function(a:*,b:*):int {
  return a%10 - b%10
}, Array.DESCENDING );
log( array.join(",") ); // 5,3,21,1,10

Array#sortOn

オブジェクトの配列を、オブジェクトの指定した属性でソートします。

  • 引数で、ソート条件とする属性とオプションを指定できます。
    • ソート条件とするカラムは複数指定でき、最初の条件属性の値が同じであった場合、2つめの条件属性の値でソートされます。。
  • Array#sortと違って比較関数は指定できません。
// オブジェクトの配列
var f:Function = function():String { return this.a+":"+this.b;}
var objects:Array = [
  { "a":1,  "b":10, toString:f },
  { "a":21, "b":10, toString:f },
  { "a":5,  "b":3,  toString:f },
  { "a":3,  "b":7,  toString:f },
  { "a":10, "b":3,  toString:f },
];

// 属性"a"でソート。
// オプションを指定していないので文字列としてソートされる
objects.sortOn("a");
log( objects.join(",") ); // 1:10,10:3,21:10,3:7,5:3

//属性"b"で数値として逆順でソート。
objects.sortOn("b", Array.NUMERIC|Array.DESCENDING );
log( objects.join(",") ); // 21:10,1:10,3:7,10:3,5:3

//第一ソート条件を属性"b",第二ソート条件を"a"で数値としてソート。
objects.sortOn(["b","a"], Array.NUMERIC );
log( objects.join(",") ); // 5:3,10:3,3:7,1:10,21:10