Avatar billede oleskrogh Nybegynder
11. januar 2005 - 17:34 Der er 13 kommentarer og
1 løsning

Sortere tal i Array efter størrelse

Jeg vil gerne kunne sortere nedenstående array, så tallene kommer i rigtig størrelsesorden. Mindst først...

myArray=new Array(11,2,3,23,5);
Er der nogen der kender en smart måde til det?
/Ole
Avatar billede thulstrup Nybegynder
11. januar 2005 - 18:12 #1
myArray = new Array(11, 2, 3, 23, 5);
myArray.sort(Array.NUMERIC);
trace(myArray)
Avatar billede barklund Nybegynder
11. januar 2005 - 18:28 #2
Og har du kun Flash 6 til rådighed (og ikke Flash 7 som ovenstående kræver):

myArray.sort(function(a,b){return a-b;});

--
Morten Barklund
Avatar billede thulstrup Nybegynder
11. januar 2005 - 18:34 #3
Sikker på at det ikke virker i 6'eren? Hvis jeg sætter mine publish settings til Flash Player 6, tracer den stadig 2,3,5,11,23
Avatar billede barklund Nybegynder
11. januar 2005 - 18:39 #4
Ganske sikker :) Prøv at åbne flash mx og teste det der - nada :)
Avatar billede thulstrup Nybegynder
11. januar 2005 - 18:41 #5
Ahhh på den måde. Jamen så holder jeg bare mund nu :o)
Avatar billede oleskrogh Nybegynder
11. januar 2005 - 18:48 #6
Jeg har flash 7, men det fungerer ikke. Jeg tror måske det skyldes måden, som array'et dannes på:
resultatArray = input.text.split(",");
resultatArray.sort(Array.NUMERIC);

I input.text har brugeren tastet nogle tilfældige tal med komma imellem. Måske tror flash at tallene er strenge og behandler dem sådan??
/Ole
Avatar billede barklund Nybegynder
11. januar 2005 - 18:54 #7
Tja, det er jo lige netop det, som Array.NUMERIC gør - men det kræver jo at alle tallene er gyldige tal
Avatar billede oleskrogh Nybegynder
11. januar 2005 - 19:02 #8
Kan man finde tal-værdien af en strengvariabel:
var1 = "17";
så vil jeg prøve at konvertere værierne til tal- det er da et forsøg værd.
/Ole
Avatar billede jaspers_cool Nybegynder
11. januar 2005 - 19:09 #9
Ja du konverterer dem ved at skrive int(tal) eller parseFloat(tal)
Avatar billede oleskrogh Nybegynder
11. januar 2005 - 19:39 #10
Det løste faktisk problemet, nu ved jeg bare ikke hvem der skal have point??
Jeg hælder mest til jaspers cool!
/Ole
Avatar billede barklund Nybegynder
11. januar 2005 - 19:54 #11
Tja, man konverterer "korrekt" ved at skrive Number(tal) - det er den officielle metode. int() er uddateret og parseInt er kun til heltal og bruges til blandt andet at læse decimaltal.
Avatar billede jaspers_cool Nybegynder
12. januar 2005 - 10:15 #12
Det er godt nok ikke hvad der står her... jeg skrev desuden parsefloat ikke parseint.

Men her er et svar ihvertfald, så må i selv finde ud af hvem der skal have point.

Usage
parseFloat(string)

Parameters
string The string to read and convert to a floating-point number.
Avatar billede barklund Nybegynder
12. januar 2005 - 13:01 #13
Well, parseFloat kan selvfølgelig bruges, så længe man ved at input er en streng. int() derimod er knap så smart, da "ikke-tal" bliver til 0 og den desuden runder ned. Number() er dog den universielle konverteringsfunktion.

Dog skal man lige huske lidt fejlhåndtering og teste på, om "tallene" overhovedet er tal med isNaN(num) funktionen.
Avatar billede oleskrogh Nybegynder
12. januar 2005 - 15:48 #14
Tak til alle!
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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