Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 14:46 Der 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.

Håber nogen har forstand på det.
Avatar billede olebole Juniormester
26. juni 2004 - 15:36 #1
<ole>

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.

/mvh
</bole>
Avatar billede nielsbrinch Nybegynder
27. juni 2004 - 11:20 #2
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.
Avatar billede olebole Juniormester
27. juni 2004 - 13:29 #3
Jamen, så sorterer du da bare lige ud ad landevejen:

  var a = ["udbud_3","udbud_1","udbud_2","udbud"];
  a.sort();
  alert(a);

... jeg forstår ikke helt dit problem. Noget tyder på, det ikke er JavaScript, du har sorteret med  :)
/mvh
Avatar billede nielsbrinch Nybegynder
28. juni 2004 - 13:58 #4
Du har ret olebole. Undskyld.

Jeg tilføjer ¤:¤#¤# efter hvert ord, inden jeg sorterer. Og SÅ er det omvendt.

udbud_1¤:¤#¤#
udbud_2¤:¤#¤#
udbud_3¤:¤#¤#
udbud¤:¤#¤#

Der vil jeg altså have udbud¤:¤#¤# til at komme først i sorteringen.

Der er ikke mulighed for at "snyde" og f.eks. lige fjerne ¤:¤#¤# midlertidigt mens der sorteres.
Avatar billede roenving Novice
28. juni 2004 - 14:30 #5
Cowboy-kode:

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));
Avatar billede roenving Novice
28. juni 2004 - 14:51 #6
-- og hvis du kigger nærmere på koden, vil du se, at det jeg faktisk gør, er at lave det nummer med at fjerne de tegn, som uønsket sorteres bagved ...

-- hvilket også betyder, at det kun virker, hvis du i virkeligheden har præcis det tegn, der er splittet på lige efter det, som skal sorteres ...

Derfor betegnelsen cowboy-kode !-)
Avatar billede roenving Novice
28. juni 2004 - 14:52 #7
-- næste problem opstår så, når du har flere end 9 udbud, for det er tekst-sortering !-)
Avatar billede nielsbrinch Nybegynder
28. juni 2004 - 16:06 #8
Det var da et temmelig godt forsøg. Jeg kan ikke helt direkte bruge det, men jeg er overbevist om at jeg kan kravle det sidste stykke. Tak.
Avatar billede nielsbrinch Nybegynder
29. juni 2004 - 08:02 #9
Lægger du et svar?
Avatar billede roenving Novice
29. juni 2004 - 17:25 #10
Velbekomme '-)

Men behold nu selv en hel del af dine point !-)
Avatar billede nielsbrinch Nybegynder
29. juni 2004 - 17:58 #11
Jeg beholder en fair mængde selv, så
Avatar billede roenving Novice
29. juni 2004 - 18:24 #12
*lol*

-- tak for point ;~}

-- vejrmøller er for besværlige at slås med, men jeg mener nu, at det jeg kunne bidrage med højst var til ca. det halve !-)
Avatar billede nielsbrinch Nybegynder
09. maj 2005 - 14:01 #13
roenving, du havde fuldstændig ret for 11 måneder siden :-)

Der opstod et problem da der kom flere end 10 autonummererede énslydende tekststrenge.

http://www.eksperten.dk/spm/616324
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester