好程序员对代码应该锱铢必较

var monthly:Array=new Array("Jan-"+beforLstYrLstTwo,"Feb-"+beforLstYrLstTwo,"Mar-"+beforLstYrLstTwo,"Apr-"+beforLstYrLstTwo,
			"May-"+beforLstYrLstTwo,"Jun-"+beforLstYrLstTwo,"Jul-"+beforLstYrLstTwo,"Aug-"+beforLstYrLstTwo,
			"Sep-"+beforLstYrLstTwo,"Oct-"+beforLstYrLstTwo,"Nov-"+beforLstYrLstTwo,"Dec-"+beforLstYrLstTwo,
										
			"Jan-"+lstYrLstTwo,"Feb-"+lstYrLstTwo,"Mar-"+lstYrLstTwo,"Apr-"+lstYrLstTwo,
			"May-"+lstYrLstTwo,"Jun-"+lstYrLstTwo,"Jul-"+lstYrLstTwo,"Aug-"+lstYrLstTwo,
			"Sep-"+lstYrLstTwo,"Oct-"+lstYrLstTwo,"Nov-"+lstYrLstTwo,"Dec-"+lstYrLstTwo,
										
			"Jan-"+currentYrLstTwo,"Feb-"+currentYrLstTwo,"Mar-"+currentYrLstTwo,"Apr-"+currentYrLstTwo,
			"May-"+currentYrLstTwo,"Jun-"+currentYrLstTwo,"Jul-"+currentYrLstTwo,"Aug-"+currentYrLstTwo,
			"Sep-"+currentYrLstTwo,"Oct-"+currentYrLstTwo,"Nov-"+currentYrLstTwo,"Dec-"+currentYrLstTwo);
			var quarterly:Array=new Array("Q1 "+beforLstYr,"Q2 "+beforLstYr,"Q3 "+beforLstYr,"Q4 "+beforLstYr,
						    "Q1 "+lstYr,"Q2 "+lstYr,"Q3 "+lstYr,"Q4 "+lstYr,
						    "Q1 "+currentYr,"Q2 "+currentYr,"Q3 "+currentYr,"Q4 "+currentYr);
			var halfYr:Array=new Array("1H "+beforLstYr,"2H "+beforLstYr,
						  "1H "+lstYr,"2H "+lstYr,
						  "1H "+currentYr,"2H "+currentYr);

上面是我同事的代码,存在一下问题:

1 连接符,月季度年改变,改动比较多

2 多加几年,代码又要增加

下面是我改进后代码


         //getnMQY('m',"-",3)
         //getnMQY('q'," ",3)
         //getnMQY('y'," ",3)
         private function getMQY(sym:String,year:String,sep:String):Array{
			var map:Object={1:{m:'Jan',q:'Q1',y:'1H'},
			                2:{m:'Feb',q:'Q2',y:'2H'},
			                3:{m:'Mar',q:'Q3'},4:{m:'Apr',q:'Q4'},
			                5:{m:'May'},6:{m:'Jun'},7:{m:'Jul'},8:{m:'Aug'},
			                9:{m:'Sep'},10:{m:'Oct'},11:{m:'Nov'},12:{m:'Dec'},
			                m:13,q:5,y:3
			                };
			var arr:Array=[];					
			for(var i:int=1;i<map[sym];i++){
				arr.push(map[i][sym]+sep+year);
			} 
			return arr;               
		}
		private function getnMQY(sym:String,sep:String,n:int):Array{		
			var arr:Array=[];
			var y:Number=new Date().getFullYear();
			for(var i:int=0;i<n;i++){
				arr=arr.concat(getMQY(sym,String(y-i).substring(2,4),sep));
			}
			return arr;
		}
         对上面的数组进行排序,先按年,再按H,Q,M排序
                 //var arr:Array=getnMQY('m',"-",3).concat(getnMQY('y'," ",3)); 
                 //var arr1:Array=arr.concat(getnMQY('q'," ",3));  
                 //arr1.sort(compareYQM);
                 //trace(ObjectUtil.toString(arr1)); 

                private var map:Object={Jan:1,Feb:2,Mar:3,Q1:4,
		            Apr:5,May:6,Jun:7,Q2:8,'1H':9,
		            Jul:10,Aug:11,Sep:12,Q3:13,
		            Oct:14,Nov:15,Dec:16,Q4:17,'2H':18}
		private function compareYQM(a:Object,b:Object):int{
			var a0:Array=a.toString().split(/[- ]/);
			var b0:Array=b.toString().split(/[- ]/);
			var a1:int=parseInt(a0[1]);
			var b1:int=parseInt(b0[1]);
			if(a1>b1){
				return 1;
			}else if(a1<b1){
				return -1;
			}else{
				var a2:int=map[a0[0]];
				var b2:int=map[b0[0]];
				if(a2>b2){
				   return 1;
			    }else if(a2<b2){
				   return -1;
			    }else{
			       return 0;
			    }
			}
		}  
      上面有两个Map,如何做到只有一个Map做同样的事情
      var mapArr:Array=[{m:'Jan',value:1},{m:'Feb',value:2},
                           {m:'Mar',value:3},{q:'Q1',value:4},
                           {m:'Apr',value:5},{m:'May',value:6},
                           {m:'Jun',value:7},{q:'Q2',value:8},
                           {h:'1H',value:9},{m:'Jul',value:10},
                           {m:'Aug',value:11},{m:'Sep',value:12},
                           {q:'Q3',value:13},{m:'Oct',value:14},
                           {m:'Nov',value:15},{m:'Dec',value:16},
                           {q:'Q4',value:17},{h:'2H',value:18}];
        private function getMQY2(sym:String,year:String,sep:String):Array{                            
            var arr:Array=[];                    
            for(var i:int=1,len:int=mapArr.length;i<len;i++){
                if(arr[i].hasOwnProperty(sym))
                arr.push(arr[i][sym]+sep+year);
            } 
            return arr;               
        }
        private function genCompareMap(){
            var obj:Object={};            
            for(var i:int=1,len:int=mapArr.length;i<len;i++){
                var sym:String='m';
                if(mapArr[i].hasOwnProperty('m')){
                    sym='m';
                }else if(mapArr[i].hasOwnProperty('q')) {
                    sym='q';
                }else{
                    sym='h';
                }                
                obj[mapArr[i].value]=mapArr[i][sym];
            } 
            return obj;
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值