Ist leider auch nicht vorhanden, muss man also selbst schreiben.
Falls du keine bessere Lösung gefunden hast, hier mal ein Beispiel für so etwas.
Da werden die Preise der Stunden auf- oder absteigend (ascend) sortiert. Bei gleichen Preisen dann auch nach der Stunde.
Die entsprechenden Werte einfach wie in der Beispiel-Stringvariablen arr in diese ausgeben.
Nach der Sortierung werden dann die gewünschten 5 höchsten/niedrigsten Werte (only_top) ausgegeben.
Code: Alles auswählen
! Sortliste Pärchen Preis/bis Std. Semikolin nächstes Pärchen
object arr ="8.805/1;8.706/2;8.562/3;8.442/4;8.701/5;8.903/6;10.741/7;12.109/8;14.633/9;13.194/10;12.985/11;12.290/12;12.457/13;12.718/14;12.370/15;12.014/16;11.793/17;11.088/18;10.500/19;9.422/20;9.215/21;8.814/22;8.337/23;7.750/24";
!Element Art n=numerisch / a=alphanumerisch
object arrtyp ="n;n";
!Tauschstrings von > nach
string av;
string an;
!Trennzeichen für Array 1. / 2.Dimension
var sep1=";";
var sep2="/";
!damit auch erstes und letztes Element Begrenzungen mit Trennzeichen haben
arr = sep1#arr.Trim(sep1)#sep1;
integer len = web.webGetValueListCount(arr).ToInteger() - 2;
boolean swapped = true;
boolean ascend = true;
var elemart = "a";
string index;
integer von = 0;
integer bis = 1;
integer only_top = 5;
foreach(index, system.GenerateEnum(von, bis)) {
integer x = (von + bis) - index.ToInteger();
elemart = arrtyp.StrValueByIndex(sep1, x);
swapped = true;
while (swapped) {
integer i = 2;
swapped = false;
while (i <= len) {
if (((elemart <> "n") && ((arr.StrValueByIndex(sep1, i).StrValueByIndex(sep2, x).ToUpper()) < (arr.StrValueByIndex(sep1, i - 1).StrValueByIndex(sep2, x).ToUpper())))
|| ((elemart == "n") && ((arr.StrValueByIndex(sep1, i).StrValueByIndex(sep2, x).ToFloat()) < (arr.StrValueByIndex(sep1, i - 1).StrValueByIndex(sep2, x).ToFloat())))) {
av = arr.StrValueByIndex(sep1, i - 1) # sep1 # arr.StrValueByIndex(sep1, i);
an = arr.StrValueByIndex(sep1, i) # sep1 # arr.StrValueByIndex(sep1, i - 1);
av = sep1 # av # sep1;
an = sep1 # an # sep1;
arr = arr.Replace(av, an);
swapped = true;
}
i = i + 1;
}
}
}
!Trennzeichen für erstes und letztes Element wieder entfernen
arr = arr.Trim(sep1);
string ix;
if (ascend) {
WriteLine("Wert aufsteigend");
foreach(ix, system.GenerateEnum(0, only_top-1)) {
WriteLine((ix.ToInteger() + 1) # ". " # (arr.StrValueByIndex(sep1, ix).StrValueByIndex(sep2, 0)) # ": " # (arr.StrValueByIndex(sep1, ix).StrValueByIndex(sep2, 1)));
}
} else {
object arr2 = "";
string elem;
foreach(elem, arr.Split(";")) {
arr2 = elem # sep1 # arr2;
}
arr = arr2;
WriteLine(" ");
WriteLine("**********************");
WriteLine("Wert absteigend");
foreach(ix, system.GenerateEnum(0, only_top -1)) {
WriteLine((ix.ToInteger() + 1) # ". " # (arr.StrValueByIndex(sep1, ix).StrValueByIndex(sep2, 0)) # ": " # (arr.StrValueByIndex(sep1, ix).StrValueByIndex(sep2, 1)));
}
}