Ich bin nicht ganz klar, wie Sie die Daten erhalten, aber wenn Sie tatsächlich die XML zu sortieren haben, ich schätze, Sie müssen nur eine benutzerdefinierte Sortierfunktion schreiben.
Wenn Sie Objekte haben oder in Objekte zerlegen können, können Sie eine benutzerdefinierte Vergleichsfunktion verwenden. Hier ist eine Funktion, die ich verwendet habe, um eine Sortierung ohne Berücksichtigung von Groß-/Kleinschreibung in einer Array-Sammlung von mobilen Trägern durchzuführen. Ich habe es auch in der Anordnung Sammlung Sortier das erste Element zu überspringen - CARRIER STANDARD:
private function x(event:ResultEvent):void{
for(i=0; i<event.result.carriers.carrier.length; i++){
_mobile_carriers.addItem({label:event.result.carriers.carrier[i].name, data:event.result.carriers.carrier[i].id});
}
var sort:Sort = new Sort();
sort.fields = [new SortField("label")];
sort.compareFunction = caseInsensitiveSort;
_mobile_carriers.sort = sort;
_mobile_carriers.addItemAt({label:"Mobile Carrier", data:0},0);
_mobile_carriers.refresh();
}
private function caseInsensitiveSort(obj1:Object, obj2:Object, fields:Array):int{
if(obj1.label == CARRIER_DEFAULT) return -1;
if(obj2.label == CARRIER_DEFAULT) return 1;
return (obj1.label.toLowerCase() < obj2.label.toLowerCase()) ? -1 : 1;
}
Wenn Sie die Saiten sortieren müssen, die Monate aufzählen und dann kann man nur vergleichen, wie sie auf ganze Zahlen abbildet. Es kann ein besserer Weg, dies zu tun, sondern als eine schnelle Lösung könnte ich zusammen eine hash:
month_hash=
"JAN" => 1
"FEB" => 2
"MAR" => 3
...
Hier einig Pseudo-Code für einen Vergleich, dass in benutzerdefiniertem Code vergleichen, verwendet werden kann, oder als eine Art Funktion für Sort()
function compare(s1,s2){
var m1 = ""
var m2 = ""
if (s1 =~ /month="([A-Z]+)"/) m1 = $1;
if (s2 =~ /month="([A-Z]+)"/) m2 = $1;
if(m1 == "" or m2 == ""){
throw exception;
}else{
if(month_hash(m1) > month_hash(m2)){
// string 1's month comes after string 2's month
// return whatever will indicate that
return 1;
}else if(month_hash(m1) < month_hash(m2)){
// string 1's month comes before string 2's month
// return whatever will indicate that
return -1;
}else{
//same month
//return 0
}
}
}
Keine Zeit, genauen Code zu posten, aber hoffe, das hilft!