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