2009-08-14 16 views
0

Ich möchte eine array.I der Teilmenge haben die folgende ArraySubsetting Flex Array

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

nun basierend auf Benutzeranforderung ich eine Reihe von Verkaufs-Daten für einige month.For Beispiel auswählen möchten irgendwann kann es sein, verkauft Daten von April bis Dezember, manchmal kann Jul-Okt sein. Wie kann ich das tun, ohne das ursprüngliche Array zu behindern?

+0

Ok, habe ich die Lösung. –

Antwort

0

Erstellen Sie eine filterFunction für die ArrayCollection, die den Filter wie erforderlich anwendet.

1

können Sie ArrayCollection.filterFunction verwenden, wenn Ihre Verwendung von Zeichenketten für den Monat es ein bisschen schwieriger macht:

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 
+0

Vielen Dank. Aber ich tat es auf eine etwas andere Art. Statt Daten als ArrayCollection zu verwenden, habe ich es als Array verwendet und dann habe ich Slice-Funktion verwendet. –