2009-07-28 10 views
1

Ich habe eine Array-Sammlung, die ich auf 100 Elemente beschränken möchte. Ich versuchte, eine Filterfunktion einzurichten, wo die Rückkehr war:Begrenzung der Werte in einer Array-Sammlung

return (myAC.getItemIndex (Element)> 100);

aber der Wert war immer -1. Aus irgendeinem Grund konnte es den Gegenstand nicht finden, obwohl der Gegenstand definitiv dort ist.

ich in der Lage bin dies mit einer while-Schleife zu tun:

while (myAC.length> 100) myAC.removeItemAt (100);

Gibt es eine andere Möglichkeit, dies zu erreichen? Vielen Dank!

Antwort

4

Hmm, der beste Weg, die ich denken kann ist:

myAC = new ArrayCollection(myAC.toArray().slice(0,100)); 

Natürlich, wenn Sie die Größe steuern könnte, wenn die ArrayCollection zuerst konstruiert wird, das wäre besser.

Beachten Sie, dass Sie die Eigenschaft source des Objekts nicht direkt bearbeiten können. Aus der Dokumentation der source Eigenschaft ArrayCollection:

Die Quelle der Daten in der Arraycollection. Das ArrayCollection-Objekt stellt keine Änderungen dar, die Sie direkt am Quell-Array vornehmen. Verwenden Sie immer die ICollectionView- oder die IList-Methode, um die Auflistung zu ändern.

2

versuchen, etwas wie folgt aus:

myAc = new Arraycollection (myAC.source.slice (0.100));

nicht getestet dies so

1

Zuerst Ihre „>“ sollte „<“ in der ersten Zeile des Codes sein. Du willst die ersten 100 Gegenstände behalten, nicht rauswerfen. Ich würde wetten, dass die Filterung bricht, weil sich getItemIndex ändert, während Sie die Array-Sammlung filtern. Da Sie immer den Anfangsteil wegwerfen, kann nichts jemals darin sein.

nicht sicher, aber es ist ein Anfang

0

I Arraycollection in einer Klasse namens LimitedArrayCollection wickeln würde, die die Grenze als optionales Compiler-Argument. Überschreiben Sie dann die entsprechenden öffentlichen Methoden (addItem usw.), die diese Funktionalität beeinträchtigen würden. Dies wird vom Standpunkt der Entwicklung und Wiederverwendung viel sauberer sein. Es wird jede Zweideutigkeit beseitigen, mit der Sie zwangsläufig konfrontiert werden, wenn Sie versuchen, Filter oder andere clevere Ansätze zu verwenden.

Verwandte Themen