23. juni 2004 - 14:46Der er
11 kommentarer og 2 løsninger
Anden måde at sortere på
Array har en sort-metode men jeg er ikke tilfreds med den måde den sorterer på, og jeg ved man kan definere sin egen sorteringsmetode. Sådan en vil jeg gerne have hjælp til.
Vi siger jeg har tre strenge i mit array: udbud_1 udbud_2 udbud
Hvis jeg sorterer dem med JavaScript's sort-metode kommer rækkefølgen til at være som ovenstående. Men jeg vil have rækkefølgen skal være sådan: udbud udbud_1 udbud_2
(på samme måde som eksempelvis Windows sorterer filnavne på normalt)
I det lille eksempel her er det selvfølgelig nemt nok, men det skal være en generel metode da jeg skal sortere hundredevis af strenge og ingen mulighed har for at vide på forhånd hvordan de strenge er bygget op.
Så tror jeg, du skal oprette spørgsmålet i kategorien for script-clairvoyance. Kan du ikke opstille retningslinier for sorteringen, er det mere end svært at lave en algoritme, der opfylder retningslinerne ;o)
Kan du gøre rede for de kriterier, der skal sorteres efter, kan det sagtens lade sig gøre at skrive en funktion - ellers er det en umulighed.
Der skal sorteres helt almindeligt. A kommer før B. 1 kommer før 2. Intet nyt der.
Men hvis to ord er éns op til et vist punkt, er det det korteste af ordene der skal komme først, ligesom det er ved normal sortering som standard næsten alle andre steder end i JavaScript.
var x = ['udbud_3¤:¤#¤#','udbud_2¤:¤#¤#','udbud¤:¤#¤#','udbud_1¤:¤#¤#']; function arrsort(a,b){ var as = a.split('¤')[0]; var bs = b.split('¤')[0]; return (as>bs)?1:(bs>as)?-1:0; } alert(x.sort(arrsort));
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.