2011-05-04 130 views
1

我已经创建了一个阵列如下所示排序一个Flex阵列

protected function getMyArray(dataArray:Array):Array 
    { 
     var labelList:Array=new Array; 
     for each (var property:Object in dataArray) 
     { 
      if (labelList[property.bucketTime] != property.bucketTime) 
       labelList[property.bucketTime]=property.bucketTime; 
     } 
     return labelList; 
    } 

是否有可能进行排序基于property.bucketTime阵列labelList?

编辑:样品输入dataArray中会是这样:

var tempObj:Object = new Object; 
      tempObj.bucketTime = DateField.stringToDate("30-01-2010", "DD-MM-YYYY").time; 
      tempObj.score = 76; 
      dataArray.addItem(tempObj); 

      tempObj = new Object; 
      tempObj.bucketTime = DateField.stringToDate("13-02-2010", "DD-MM-YYYY").time; 
      tempObj.score = 21; 
      dataArray.addItem(tempObj); 

      tempObj = new Object; 
      tempObj.bucketTime = DateField.stringToDate("30-03-2010", "DD-MM-YYYY").time; 
      tempObj.score = 10; 
      tempArry.addItem(tempObj); 

回答

0

Atlast我排序了labelList Array.Please在下面找到我的解决方案。让我知道是否有更好的方法来实现这一点。

var termObject:Object = ObjectUtil.getClassInfo(labelList); 
     var termsArray:Array = termObject.properties; 
     var sortedColumnArray:Array = new Array; 
     for each(var term:Object in termsArray){ 
      if(labelList.hasOwnProperty(term)){ 
       sortedColumnArray.push(labelList[term]); 
      } 
     } 
3

除非bucketTime是一个数字;那么你实际上并没有填充数组。您只需将属性添加到Array对象,就好像它是一个Dictionary。我见过一种叫做关联数组和其他语言结构的词典。

如果是这样的话,你使用Array类作为字典,那么就没有办法对它进行排序。这种结构的本质是它们不可排序。

但是,如果property.bucketTime是一个数字,并且您尝试将数组添加到数组中,就好像它们是数组一样,您可以使用Array.sortArray.sortOn方法进行排序。

+0

property.bucketTime是一个数字。我试过labelList.sort(Array.DESCENDING),但是数组没有被排序。 – kbgn 2011-05-04 18:02:15

+0

@ kbgn27要么给我们提供样本数据,并告诉我们你看到了什么样的结果,你期望得到什么结果,或给我们一个完整的可运行示例来展示你的问题,这样我们就可以测试自己。 (或两者都有) – JeffryHouser 2011-05-04 19:01:38

+0

@ kbgn27真的吗? labelList.sortOn(“bucketTime”)不适合你? – 2011-05-04 19:20:59