as3中的sortOn是针对[{...},{...}],arrayobject类型的排序的,测试在数组中有时候不能解决问题,
需要用Array.sort(compareFunction, sortOptions),来自己定义排序:
应用中写的一些排序函数,标记一下方便使用:
/**
* cardsArr[i][0] 方块 草花 红心 黑桃 (index:0~3)
* cardsArr[i][1] A,2,3,4,5,6,7,8,9,10,J,Q,K,xiaogui,dagui (index:1~15)
* 数组排序(降序)
* @param array
*/
public static function sortDESC(array:Array):void {
array.sort(mysort);
}
private static function mysort(para1, para2) {
if (para1[1] > para2[1]) return -1;
else if (para1[1] < para2[1]) return 1;
else {
if (para1[0] > para2[0]) return 1;
else if (para1[0] < para2[0]) return -1;
else return 0;
}
}
/**
* 数组排序(按牌重复次数的多少)
* @param array
*/
public static function sortRepeat(array:Array):Array {
var len:int = array.length;
var count:int;
var _cardArr:Array = [];
var temp:Array = [];
sortDESC(array);
for (var i:int = 1; i <= 15; i++ ) {
count = 0;
for (var j:int = 0; j < len; j++ ) {
if (array[j][1] == i) count++;
}
_cardArr.push([i,count]);
}
sortDESC(_cardArr);
//trace("_cardArr",_cardArr);
for (var m:int = 0; m < len; m++ ) {
for (var n:int = 0; n < len; n++ ) {
if (array[n][1] == _cardArr[m][0]) {
temp.push([array[n][0],array[n][1]]);
}
}
}
return temp;
}
浙公网安备 33010602011771号