loadin Do…

一条只能往前走的路,叫时光.

首页 联系 订阅 管理

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;
        }


posted on 2008-11-13 13:41  i'am sl  阅读(338)  评论(0)    收藏  举报