Seite 1 von 1

Sortierung {Erldigt]

Verfasst: Di, 03. Mai 2022 14:38
von Wolfgang Ciriack
Hallo,
habe ein Array, wo ich die Elemente sortieren möchte, dass klappt ja auch.
Erstes Element: Datum
Zweites Element: String(aus Zahlen)
Mit ASort(aTmp, , , {|aX, aY| DtoS(aX[1]) + aX[2] < DtoS(aY[1]) + aY[2]}) bekomme ich z.B. eine Sortierung (zweites Element)
"100"
"201"
"30004"
"60"
"700"
Nun soll das aber nach Datum und zweites Feld "numerisch" sortiert werden, also
"60"
"100"
"201"
"700"
"30004"
Jemand eine Idee, wie man dann die Sortierung des Arrays zur Ausgabe sortieren kann ?

Re: Sortierung

Verfasst: Di, 03. Mai 2022 14:44
von Tom

Code: Alles auswählen

ASort(aTmp, , , {|aX, aY| DtoS(aX[1]) + Str(Val(aX[2]),10,0) < DtoS(aY[1]) + Str(Val(aY[2]),10,0)})

Re: Sortierung

Verfasst: Di, 03. Mai 2022 14:45
von Martin Altmann
Aufsteigend oder Absteigend numerisch? Mach doch für das numerische Feld das Komplement als strzero().
Bsp.: Dein numerisches Feld hat eine Länge von 5:

Code: Alles auswählen

ASort(aTmp, , , {|aX, aY| DtoS(aX[1]) + strzero( 99999 - aX[2], 5 ) < DtoS(aY[1]) + strzero( 99999 - aY[2], 5 ) })
Oder meintest Du was anderes?

Viele Grüße,
Martin

Re: Sortierung

Verfasst: Di, 03. Mai 2022 14:52
von Wolfgang Ciriack
Werde mal beide Vorschläge ausprobieren.
Danke vorerst.

Re: Sortierung

Verfasst: Di, 03. Mai 2022 15:11
von Wolfgang Ciriack
Ok, funktionieren beide, Danke.
Hatte sowas schon mal, bin bloß auf die Schnelle nicht mehr auf diese einfache(n) Lösung(en) gekommen.

Re: Sortierung {Erldigt]

Verfasst: Di, 03. Mai 2022 16:11
von Tom
Statt Str(Val()) könntest Du auch schlicht PadL() nutzen.