Ich versuche, eine Arraycollection mit dieser Art zu sortieren:Flex Sort ist die Sortierung, wo nichts (in einer Arraycollection) sortiert werden sollen
private function sortArray(questions:ArrayCollection):void
{
questions.sort = new Sort();
questions.sort.fields = [new SortField("rank")];
questions.sort.compareFunction = rankFunction;
questions.refresh();
}
private function rankFunction(a:int, b:int, array:Array = null):int
{
if(a == b)
{
return 0;
}
if(a>b)
{
return 1;
}
else
{
return -1;
}
}
gibt es 23 Objekte und alle haben den Rang = 0
I erwartet, dass nichts geändert wird, aber nach der Aktualisierung tauschten die Elemente an der Position 0 und 11 der ArrayCollection ihre Position.
Im rankFunction wird immer 0 zurückgegeben
Kann mir jemand sagen, was falsch ist hier los?
Gleicher Effekt bei Verwendung: private Funktion sortArray (Array: ArrayCollection): void { var Sortierung: Sort = new Sort(); sort.compareFunction = rankFunction; array.sort = sortieren; array.refresh(); } private Funktion rankFunction (a: Objekt, b: Objekt, Array: Array = null): int { if (a.rank == b.rank) { return 0; } if (a.rank> b.rank) { zurück 1; } else { Rückgabe -1; } } – derChris
Eigentlich haben Sie nur 'int' für' Object' geändert. Mein Hauptpunkt war, dass Sie Felder selbst aus dem Objekt extrahieren sollten. –
Nein, das habe ich gemacht: if (a.rank == b.rank) – derChris