对as3数组进行group分组操作
来源:互联网 发布:程序员笔记本推荐 知乎 编辑:程序博客网 时间:2024/06/05 23:50
public static function getKeyValue(o:*,itemName:String):String
{
var keyValue:String=""
var groupByArr:Array=itemName.split("_")
for each(var col:String in groupByArr)
{
//a2.push(o[groupByArr[]])
if(keyValue=="")
keyValue=o[col]
else
keyValue+="_"+o[col]
}
return keyValue
}
/**
*对数组进行sql分组操作
* @param a1
* @param itemName 分组字段 字段之间用_分隔
* @param ref 要求出的聚合字段用_分隔,前面为字段名,后面为聚合类型,例如"score_sum","score_min","score_max","price_max"
* @return
* var o1:Object={nn:"eee",num:32,score:100,price:90}
var o2:Object={nn:"eee1",num:321,score:60,price:60}
var o3:Object={nn:"eee1",num:322,score:70,price:70}
var o4:Object={nn:"eee2",num:322,score:80,price:120}
var o5:Object={nn:"eee2",num:322,score:80,price:120}
var c:Array=[]
c.push(o1);
c.push(o2);
c.push(o3);
c.push(o4);
c.push(o5);
var a:Array=groupbyArray(c,"num_nn","score_sum","score_min","score_max","price_max")
for(var i:int=0;i<a.length;i++)
{
var key:String=a[i].key
trace(key+"_________"+a[i].sum[i]["score"]+"_"+a[i].max[i]["score"]+"_"+a[i].min[i]["score"]+"_"+a[i].max[i]["price"]+"_"+a[i].len)
}
*/
public static function groupbyArray(a1:Array,itemName:String,...ref):Array
{
var a2:Array=[]
var result:Array=[]
for each(var o:Object in a1)//求出group by键
{
a2.push(getKeyValue(o,itemName));
}
var newArray:Array = [];
for(var i:int = 0; i < a2.length; i++)
{
if (newArray.indexOf(a2[i]) == -1)
newArray.push(a2[i]);
}
trace(newArray);
var len:int=ref.length
var keyArr:Array=[]
for(var j:int=0;j<len;j++)
{
var c:Array=ref[j].toString().split("_")
keyArr[j]={key:c[0],type:c[1]}
}
var maxNum:Array=[]
var minNum:Array=[]
var sumNum:Array=[]
var averageNum:Array=[]
var groupLen:Array=[]
for(var k:int=0;k<newArray.length;k++)
{
var item:String=newArray[k].toString()
groupLen[item]=0
for each(var o2:Object in a1)
{
if(item==getKeyValue(o2,itemName))//o2[itemName])
{
groupLen[item]+=1
for each(var d:Object in keyArr)
{
if(d.type=="max")
{
if(!maxNum[k])
maxNum[k]=[]
if(!maxNum[k][d.key] || maxNum[k][d.key]<o2[d.key])
maxNum[k][d.key]=o2[d.key]
}
else if(d.type=="min")
{
if(!minNum[k])
minNum[k]=[]
if(!minNum[k][d.key] || minNum[k][d.key]>o2[d.key])
minNum[k][d.key]=o2[d.key]
}
else if(d.type=="sum")
{
if(!sumNum[k])
sumNum[k]=[]
if(!sumNum[k][d.key])
sumNum[k][d.key]=0
sumNum[k][d.key]+=o2[d.key]
}
}
}
}
result[k]={max:maxNum,min:minNum,sum:sumNum,aver:averageNum,key:item,len:groupLen[item]}
}
return result;
}
{
var keyValue:String=""
var groupByArr:Array=itemName.split("_")
for each(var col:String in groupByArr)
{
//a2.push(o[groupByArr[]])
if(keyValue=="")
keyValue=o[col]
else
keyValue+="_"+o[col]
}
return keyValue
}
/**
*对数组进行sql分组操作
* @param a1
* @param itemName 分组字段 字段之间用_分隔
* @param ref 要求出的聚合字段用_分隔,前面为字段名,后面为聚合类型,例如"score_sum","score_min","score_max","price_max"
* @return
* var o1:Object={nn:"eee",num:32,score:100,price:90}
var o2:Object={nn:"eee1",num:321,score:60,price:60}
var o3:Object={nn:"eee1",num:322,score:70,price:70}
var o4:Object={nn:"eee2",num:322,score:80,price:120}
var o5:Object={nn:"eee2",num:322,score:80,price:120}
var c:Array=[]
c.push(o1);
c.push(o2);
c.push(o3);
c.push(o4);
c.push(o5);
var a:Array=groupbyArray(c,"num_nn","score_sum","score_min","score_max","price_max")
for(var i:int=0;i<a.length;i++)
{
var key:String=a[i].key
trace(key+"_________"+a[i].sum[i]["score"]+"_"+a[i].max[i]["score"]+"_"+a[i].min[i]["score"]+"_"+a[i].max[i]["price"]+"_"+a[i].len)
}
*/
public static function groupbyArray(a1:Array,itemName:String,...ref):Array
{
var a2:Array=[]
var result:Array=[]
for each(var o:Object in a1)//求出group by键
{
a2.push(getKeyValue(o,itemName));
}
var newArray:Array = [];
for(var i:int = 0; i < a2.length; i++)
{
if (newArray.indexOf(a2[i]) == -1)
newArray.push(a2[i]);
}
trace(newArray);
var len:int=ref.length
var keyArr:Array=[]
for(var j:int=0;j<len;j++)
{
var c:Array=ref[j].toString().split("_")
keyArr[j]={key:c[0],type:c[1]}
}
var maxNum:Array=[]
var minNum:Array=[]
var sumNum:Array=[]
var averageNum:Array=[]
var groupLen:Array=[]
for(var k:int=0;k<newArray.length;k++)
{
var item:String=newArray[k].toString()
groupLen[item]=0
for each(var o2:Object in a1)
{
if(item==getKeyValue(o2,itemName))//o2[itemName])
{
groupLen[item]+=1
for each(var d:Object in keyArr)
{
if(d.type=="max")
{
if(!maxNum[k])
maxNum[k]=[]
if(!maxNum[k][d.key] || maxNum[k][d.key]<o2[d.key])
maxNum[k][d.key]=o2[d.key]
}
else if(d.type=="min")
{
if(!minNum[k])
minNum[k]=[]
if(!minNum[k][d.key] || minNum[k][d.key]>o2[d.key])
minNum[k][d.key]=o2[d.key]
}
else if(d.type=="sum")
{
if(!sumNum[k])
sumNum[k]=[]
if(!sumNum[k][d.key])
sumNum[k][d.key]=0
sumNum[k][d.key]+=o2[d.key]
}
}
}
}
result[k]={max:maxNum,min:minNum,sum:sumNum,aver:averageNum,key:item,len:groupLen[item]}
}
return result;
}
- 对as3数组进行group分组操作
- sql, group by 对数据进行分组
- 使用GROUP BY子句进行分组操作
- 对datatable进行分组操作
- MySQL对数据表进行分组查询(GROUP BY)
- MySQL对数据表进行分组查询(GROUP BY)
- MySQL对数据表进行分组查询(GROUP BY)
- mysql group by 对多个字段进行分组
- MySQL对数据表进行分组查询(GROUP BY)
- MYSQL GROUP BY 对多个字段进行分组
- MYSQL GROUP BY 对多个字段进行分组
- MYSQL GROUP BY 对多个字段进行分组
- MYSQL GROUP BY 对多个字段进行分组
- C# 对数组进行分组统计
- Linq分组、用group子句进行分组
- 对数组进行各种操作
- PHP根据键值,对二维数组重新进行分组
- 怎么对数据库查询进行group by 和sum() 操作
- 设计模式(c++)笔记之二(AbstractFactory抽象工厂模式)
- 求一个数组数据不在另一个数组中的数据
- Naive Bayesian classification
- POJ_1141_Brackets Sequence
- 【Tech-Android-Jni】在Ecplise中配置新的Run命令,用于生成.so文件
- 对as3数组进行group分组操作
- android下截屏
- 常见面试题排序算法(二)
- Bayesain Networks
- 如何使在Cell中的TextFiled(TextView)自适应键盘高度
- [转]ubuntu中eclipse的悬浮提示窗口背景黑色的修改方法
- Linux Framebuffer
- CYUSB 开发包
- jQuery中的.bind()、.live()和.delegate()之间区别分析