Сортировка Flex-массива - PullRequest
1 голос
/ 04 мая 2011

Я создал массив, как показано ниже

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

Можно ли отсортировать массив labelList на основе property.bucketTime?

Редактировать: пример входных данных Array будет выглядеть так:

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

Ответы [ 2 ]

3 голосов
/ 04 мая 2011

Если bucketTime не является числом;тогда вы на самом деле не заполняете массив.Вы просто добавляете свойства к объекту Array, почти как в Dictionary .Я видел Словарь под названием «Ассоциативные массивы и структуры» на других языках.

Если это так, то если вы используете класс Array в качестве словаря, то его невозможно отсортировать.Сама природа такой структуры заключается в том, что они не сортируются.

Однако, если property.bucketTime - это число, и вы пытаетесь добавить элементы в массив, как если бы они были массивом, вы можете отсортировать их, используяметоды Array.sort или Array.sortOn .

0 голосов
/ 25 мая 2011

Atlast Я отсортировал массив labelList. Пожалуйста, найдите мое решение ниже. Дайте мне знать, если есть лучший способ добиться этого.

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]);
            }
        }
...