<pre name="code" class="html">
private function statistics(answerStatAC:ArrayCollection):void
{
if (CollectionUtil.isEmpty(answerStatAC))
return;
var tempAC:ArrayCollection=new ArrayCollection;
var total_count:int=0;
var full_score_count:int=0;
/**
var dic:Dictionary = new Dictionary;
for (var j:int = 0; j < listAnswerStatAC.length; j++)
{
var lasObj:Object = listAnswerStatAC.getItemAt(j);
var index:int = int(lasObj[0]);
if(dic[index] == null)
{
var ac:ArrayCollection = new ArrayCollection;
ac.addItem(lasObj);
dic[index] = ac;
}else
{
(dic[index] as ArrayCollection).addItem(lasObj);
}
//objDict必须实现构造好
var eq:DcExamQuestion = objDict[index] as DcExamQuestion;
if(eq.subQuestions == null)
eq.subQuestions = new ArrayCollection;
eq.subQuestions.addItem(lasObj);//第一次创建并添加,和与此对象同编号的对象添加
}
**/
//下面的算法假设数据的编号是按顺序依次排列好的
var o:Object=answerStatAC.getItemAt(0);
var idx:int=int(o[0]);
var chartAC:ArrayCollection=new ArrayCollection;
var deq:DcExamQuestion;
for (var i:int=0; i < answerStatAC.length; i++)
{
var chartItem:Object;
var item:Object=answerStatAC.getItemAt(i);
var index:int=int(item[0]);//题号
var answer:String=item[1];//答案
var count:int=int(item[2]);//此答案人数
if (answer == "")
answer="未作答";
if (idx == index)//等于此题号
{
total_count += count;//计算各个答案总人数
deq = objDict[index];//找出此题的标准答案
chartItem = {answer: answer, count: count};
chartAC.addItem(chartItem);
if (i == answerStatAC.length - 1 && deq)
{
var lastRow:Object=getStatRowItem(idx, deq.eqDisplayName, deq.eqCorrectAnswer, full_score_count, total_count, chartAC);
tempAC.addItem(lastRow);
}
}
else
{
deq = objDict[idx];//此题的正确答案
if (deq)
{
var row:Object = getStatRowItem(idx, deq.eqDisplayName, deq.eqCorrectAnswer, full_score_count, total_count, chartAC);
tempAC.addItem(row);
}
idx = index; //将上一次类型索引记录,用于下一种类型索引的比较
total_count = count; //下一种类型的累计初始值
full_score_count = 0;
chartAC = new ArrayCollection;
chartItem = {answer: answer, count: count};
chartAC.addItem(chartItem);
}
}
questionRatioAC=tempAC;
}
先把以前写的例子和一个参考的代码附上,以后详细研究分组算法.目前已经想到一种分组统计的算法,就是统一组后,那一组的数据顺便删除掉.(克隆的数据),并不删除元数据.这样分组效率会越来越高.
</pre><pre>