我想要一个数组的子集。我有以下数组
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我可以这样做而不会妨碍原始数据阵列
答案 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,根据需要应用过滤器。