Created
March 20, 2012 07:51
-
-
Save nowri/2132588 to your computer and use it in GitHub Desktop.
中身がObject型のVectorをソートする
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// @see http://flashjp.com/as3/vector3.php | |
/* | |
ここではObject型の中身を持つVectorのソートをしてみます。 | |
先ほどと同様に使い慣れたArrayで実行してみます。 | |
このような場合、sortOnメソッドを使えば可能です。 | |
*/ | |
var arr:Array = new Array(); | |
arr[0] = { name:"apple" , price:98 }; | |
arr[1] = { name:"banana" , price:198 }; | |
arr[2] = { name:"chocolate" , price:148 }; | |
arr.sortOn("price",Array.NUMERIC); | |
/* | |
これで"price"の値が小さい順にソートしてくれます。 | |
ところが、、、! | |
VectorクラスにはこのsortOnメソッドがないのです。 | |
Vectorインスタンスに.sortOn(、、、としてもコンパイル時にエラーが出ます。 | |
ここでVectorクラスのsortメソッドの解説を見ると、sortメソッドの引数にcompareFunction:Functionを設定できるとあるので、これを使えばOK。 | |
*/ | |
var vec:Vector.<Object> = new Vector.<Object>(); | |
vec[0] = { name:"apple" , price:98 }; | |
vec[1] = { name:"banana" , price:198 }; | |
vec[2] = { name:"chocolate" , price:148 }; | |
vec.sort(compareFunction); | |
function compareFunction(x:Object, y:Object):Number { | |
return x.price - y.price;//値が小さい順 | |
} | |
/* | |
マニュアルによると、compareFunctionはNumber(0か正の数か負の数)を返せばいいので、上記のようにすれば値が小さい順でソートができます。 | |
また、y.price - x.priceとすれば、値が大きい順にソートしてくれます。 | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment