Der Martin: Sortierung nach bestimmten Muster

Beitrag lesen

Hallo,

Ich bräuchte bei der Sortierung folgendes Muster:

E258_70426_000A_10s.nc
E258_70426_000A_10k.nc
E258_70426_000A_11k.nc
E258_70426_000A_12k.nc
E258_70426_000A_11b.nc
E258_70426_000A_22b.nc

also zum Beispiel 's' vor 'k'? Da wirst du wohl kaum drumherum kommen, die sort-Methode von JS mit einer Callback-Funktion zu nutzen (siehe Beispiel in SELFHTML).

Das Beispiel nutzt allerdings eine Trivialversion als Callback, die im Endeffekt die normale Sortierreihenfolge nicht verändert. Du müsstest stattdessen für jedes Zeichen, das bei der Sortierung berücksichtigt werden soll, eine Art Stellenwert speichern, und in der Callback-Funktion dann diesen Stellenwert angeben.

Das nachfolgende Beispiel verwendet eine willkürliche Sortierfolge, bei der Vokale grundsätzlich vor Konsonanten sortiert werden:

var sequence = "aeioubcdfghjklmnpqrstvwxyz";  
  
function Callback(a,b)  
 { return (sequence.indexOf(a) - sequence.indexOf(b));  
 }  
  
var demo = ["abc", "def", "rst", "opq", "uvw", "mno"];  
demo.sort(Callback);

Ergebnis: "abc", "opq", "uvw", "def", "mno", "rst"

Wie also bekomme ich die Sortierung so hin, dass es nach dem folgenden Muster (siehe oben) aussieht.

Wichtig ist, dass du dein Sortiermuster zunächst eindeutig beschreiben kannst. Und dann brauchst du ein Rechenverfahren für die Callback-Funktion, das abhängig von der gewünschten Sortierung zweier Einträge entweder 0 (a==b), oder -1 (a<b) oder +1 (a>b) herausbekommt. Anstatt -1 und +1 darf es auch jeder andere negative bzw. positive Wert sein.

Habe dazu schon die Seiten zu sort() durchgelesen, habe aber nichts Passendes gefunden.

Wie kann das sein?

So long,
 Martin

--
Viele Fachleute vertreten die Ansicht, jedes Feature eines Programms, das sich nicht auf Wunsch abstellen lässt, sei ein Bug.
Außer bei Microsoft. Da ist es umgekehrt.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(