Avatar billede rthuls Nybegynder
28. juli 2004 - 20:35 Der er 4 kommentarer

udtræk tilfældige, unikke elementer fra array

Hvordan kan man lettest udtrækker 4 tilfældige, unikke elementer fra et array?

Jeg har prøvet at shuffle mit array og så udtrække de 4 første elementer med mitArray.slice(0, 4), men da det er et ret stort array, tager denne metode desværre for lang tid.

Hvad vil I foreslå?
Avatar billede barklund Nybegynder
28. juli 2004 - 23:24 #1
Hvis det er meget få elementer i et stort array, så ville jeg gøre det ved at tage en tilfældig sålænge den ikke er valgt før:

function vælgFåUdAfMange(pulje, antal) {
    var valgte = new Array();
    var retur = new Array();
    var r, i;
    for (i = 0; i < antal; i++) {
        do {
            r = Math.floor(Math.random() * pulje.length);
        } while (valgte[r] != undefined);
        valgte[r] = true;
        retur.push(pulje[r]);
    }
    return retur;
}
trace(vælgFåUdAfMange([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3));

--
Morten Barklund
Avatar billede rthuls Nybegynder
29. juli 2004 - 09:56 #2
Jamen det spiller jo bare...ikke at jeg havde forventet andet :)

I tilfældet her henter jeg arrayet fra et ASP script. Vil det være en fordel (hastighedsmæssigt) at udtrække mine elementer serverside fremfor at gøre det i Flash?
Avatar billede barklund Nybegynder
19. august 2004 - 02:42 #3
Det er smartere, ja - og jeg smider lige et svar (og undskyld ventetiden)
Avatar billede rthuls Nybegynder
12. oktober 2005 - 14:57 #4
...det var det svar vi kom fra :)
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