Avatar billede thingholm.dk Nybegynder
24. juli 2003 - 20:35 Der er 11 kommentarer og
1 løsning

Sorter en array

Hej

Jeg har denne array:

Variable _level0.highscore = [object #3, class 'Array'] [
    0:"Hold 1:60",
    1:"Hold 10:0",
    2:"Hold 11:0",
    3:"Hold 12:0",
    4:"Hold 13:0",
    5:"Hold 14:0",
    6:"Hold 15:0",
    7:"Hold 16:0",
    8:"Hold 17:0",
    9:"Hold 18:0",
    10:"Hold 19:0",
    11:"Hold 2:10",
    12:"Hold 20:0",
    13:"Hold 21:0",
    14:"Hold 22:0",
    15:"Hold 23:0",
    16:"Hold 24:0",
    17:"Hold 25:0",
    18:"Hold 26:0",
    19:"Hold 27:0",
    20:"Hold 28:0",
    21:"Hold 29:0",
    22:"Hold 3:20",
    23:"Hold 30:0",
    24:"Hold 31:0",
    25:"Hold 32:0",
    26:"Hold 33:0",
    27:"Hold 34:0",
    28:"Hold 35:0",
    29:"Hold 36:0",
    30:"Hold 37:0",
    31:"Hold 38:0",
    32:"Hold 39:0",
    33:"Hold 4:0",
    34:"Hold 40:0",
    35:"Hold 41:0",
    36:"Hold 42:0",
    37:"Hold 43:0",
    38:"Hold 44:0",
    39:"Hold 5:0",
    40:"Hold 6:0",
    41:"Hold 7:0",
    42:"Hold 8:0",
    43:"Hold 9:0"
  ]

Jeg vil gerne have sorteret den på det andet tal og spyttet de 10 højeste ud i en ny array (startende med den højeste nummer).

Jeg håber at nogen kan hjælpe.

VH

Anders
Avatar billede barklund Nybegynder
24. juli 2003 - 21:06 #1
Flash MX:

var i, s;
for (i in highscore) {
    s = highscore[i].split(":");
    highscore[i] = {hold: s[0], score: s[1]};
}
highscore.sortOn("score");
highscore.reverse();
var topTen = highscore.slice(0,10);
Avatar billede thingholm.dk Nybegynder
24. juli 2003 - 21:31 #2
Hvordan trækker jeg så værdierne ud?
Avatar billede barklund Nybegynder
24. juli 2003 - 21:36 #3
De ligger jo så i topTen:

topTen[0].hold
topTen[0].score

osv...
Avatar billede thingholm.dk Nybegynder
24. juli 2003 - 21:38 #4
Det ser ikke ud til at den sorterer rigtigt:

*****

Variable _level0.highscore = [object #4, class 'Array'] [
    0:[object #5, class 'Object'] {
      score:"50",
      hold:"Hold 1"
    },
    1:[object #6, class 'Object'] {
      score:"225",
      hold:"Hold 44"
    },
    2:[object #7, class 'Object'] {
      score:"0",
      hold:"Hold 12"
    },
    3:[object #8, class 'Object'] {
      score:"0",
      hold:"Hold 13"
    },
    4:[object #9, class 'Object'] {
      score:"0",
      hold:"Hold 14"
    },
    5:[object #10, class 'Object'] {
      score:"0",
      hold:"Hold 15"
    },
    6:[object #11, class 'Object'] {
      score:"0",
      hold:"Hold 16"
    },
    7:[object #12, class 'Object'] {
      score:"0",
      hold:"Hold 17"
    },
    8:[object #13, class 'Object'] {
      score:"0",
      hold:"Hold 18"
    },
    9:[object #14, class 'Object'] {
      score:"0",
      hold:"Hold 19"
    },
    10:[object #15, class 'Object'] {
      score:"0",
      hold:"Hold 2"
    },
    11:[object #16, class 'Object'] {
      score:"0",
      hold:"Hold 20"
    },
    12:[object #17, class 'Object'] {
      score:"0",
      hold:"Hold 21"
    },
    13:[object #18, class 'Object'] {
      score:"0",
      hold:"Hold 22"
    },
    14:[object #19, class 'Object'] {
      score:"0",
      hold:"Hold 23"
    },
    15:[object #20, class 'Object'] {
      score:"0",
      hold:"Hold 24"
    },
    16:[object #21, class 'Object'] {
      score:"0",
      hold:"Hold 25"
    },
    17:[object #22, class 'Object'] {
      score:"0",
      hold:"Hold 26"
    },
    18:[object #23, class 'Object'] {
      score:"0",
      hold:"Hold 27"
    },
    19:[object #24, class 'Object'] {
      score:"0",
      hold:"Hold 28"
    },
    20:[object #25, class 'Object'] {
      score:"0",
      hold:"Hold 29"
    },
    21:[object #26, class 'Object'] {
      score:"0",
      hold:"Hold 3"
    },
    22:[object #27, class 'Object'] {
      score:"0",
      hold:"Hold 30"
    },
    23:[object #28, class 'Object'] {
      score:"0",
      hold:"Hold 31"
    },
    24:[object #29, class 'Object'] {
      score:"0",
      hold:"Hold 32"
    },
    25:[object #30, class 'Object'] {
      score:"0",
      hold:"Hold 33"
    },
    26:[object #31, class 'Object'] {
      score:"0",
      hold:"Hold 34"
    },
    27:[object #32, class 'Object'] {
      score:"0",
      hold:"Hold 35"
    },
    28:[object #33, class 'Object'] {
      score:"0",
      hold:"Hold 36"
    },
    29:[object #34, class 'Object'] {
      score:"0",
      hold:"Hold 37"
    },
    30:[object #35, class 'Object'] {
      score:"0",
      hold:"Hold 38"
    },
    31:[object #36, class 'Object'] {
      score:"0",
      hold:"Hold 39"
    },
    32:[object #37, class 'Object'] {
      score:"0",
      hold:"Hold 4"
    },
    33:[object #38, class 'Object'] {
      score:"0",
      hold:"Hold 40"
    },
    34:[object #39, class 'Object'] {
      score:"0",
      hold:"Hold 41"
    },
    35:[object #40, class 'Object'] {
      score:"0",
      hold:"Hold 42"
    },
    36:[object #41, class 'Object'] {
      score:"0",
      hold:"Hold 43"
    },
    37:[object #42, class 'Object'] {
      score:"0",
      hold:"Hold 11"
    },
    38:[object #43, class 'Object'] {
      score:"0",
      hold:"Hold 5"
    },
    39:[object #44, class 'Object'] {
      score:"0",
      hold:"Hold 6"
    },
    40:[object #45, class 'Object'] {
      score:"0",
      hold:"Hold 7"
    },
    41:[object #46, class 'Object'] {
      score:"0",
      hold:"Hold 8"
    },
    42:[object #47, class 'Object'] {
      score:"0",
      hold:"Hold 9"
    },
    43:[object #48, class 'Object'] {
      score:"0",
      hold:"Hold 10"
    }
  ]
Avatar billede thingholm.dk Nybegynder
24. juli 2003 - 22:38 #5
Hmmm, det er lidt underligt. Hvis hold 44 kun har 1 point, sorterer den ok.
Avatar billede thingholm.dk Nybegynder
24. juli 2003 - 22:44 #6
Ok, problemet kommer hvis score > 99

Har du nogle ideer til løsning?
Avatar billede barklund Nybegynder
24. juli 2003 - 22:57 #7
Niks... den sorterer leksikalsk ;)

var i, s;
for (i in highscore) {
    s = highscore[i].split(":");
    highscore[i] = {hold: s[0], score: s[1]};
}
sort_fun = function(a,b) {
    return b.score-a.score;
}
highscore.sort(sort_fun);
highscore.reverse();
var topTen = highscore.slice(0,10);
Avatar billede barklund Nybegynder
24. juli 2003 - 22:58 #8
Det gør flash jo (dumme mården).. ;)
Avatar billede thingholm.dk Nybegynder
24. juli 2003 - 23:55 #9
Hej igen, så virker det.

BTW - hvad vil det sige at den sorterer leksikalsk?
Avatar billede barklund Nybegynder
25. juli 2003 - 09:03 #10
Den sorterer som strenge:

11
22
3
555
66

Vil blive rækkefølgen...
Avatar billede thingholm.dk Nybegynder
25. juli 2003 - 10:38 #11
Tak skal du ha' :-)
Avatar billede barklund Nybegynder
25. juli 2003 - 11:20 #12
Tarker ;)
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