子集Flex阵列

时间:2009-08-14 09:49:07

标签: flex arrays

我想要一个数组的子集。我有以下数组

public var sellAmount:ArrayCollection=new ArrayCollection([
     {month:"Jan", sell:2000},
     {month:"Feb", sell:5000},
     {month:"Mar", sell:4000},
     {month:"Apr", sell:6000},
     {month:"May", sell:3000},
     {month:"Jun", sell:9000},         
     {month:"Jul", sell:1100},
     {month:"Aug", sell:4000},
     {month:"Sep", sell:1000},
     {month:"Oct", sell:500},
     {month:"Nov", sell:4000},
     {month:"Dec", sell:3000}
     ])

现在根据用户要求,我想选择一个月的销售数据范围。例如,某些时候它可能会从4月到12月销售数据,有时可能是Jul-Oct.How我可以这样做而不会妨碍原始数据阵列

2 个答案:

答案 0 :(得分:1)

您可以使用ArrayCollection.filterFunction,虽然您在本月使用字符串会让事情变得更加困难:

function filterSalesData(startMonth:uint, endMonth:uint) {
    sellAmount.filterFunction = monthRangePredicate;
    sellAmount.refresh();

    function monthRangePredicate(obj : Object) {
        var months : Array = ["Jan", "Feb", "Mar", etc]; // TOOD: promote to class level

        var monthIndex : uint = months.indexOf(obj.month);

        return (monthIndex >= startMonth && monthIndex <= endMonth);
    }
}

filterSalesData(6, 9); // july to october
filterSalesData(3, 11); // april to december

答案 1 :(得分:0)

为ArrayCollection创建一个filterFunction,根据需要应用过滤器。