Hirdetés

Keresés

Új hozzászólás Aktív témák

  • dqdb
    nagyúr

    üdv!
    Adott egy feladat, amelyben generálni kell 12 véletlen számot majd megkeresni közülük a 3-mal oszthatókat, végül kiíratni. Működik is, csak a képen látható dolog zavar, a vesszők ott maradnak... ki lehetne azokat szedni onnan valahogy?

    A kód (ne kössetek bele, első ilyen js feladatom, és örülök, hogy működik :) :)

    <script>
    function genrand()
    {
    var tomb=new Array(12);
    var eredmeny=new Array(12);
    var i, j;
    for(i=0;i<12;i++)
    {
    tomb[i]=Math.ceil(Math.random()*11)
    }
    for(i=0;i<12;i++)
    {
    document.getElementById("tomb").innerHTML = tomb;
    }
    j=0;
    for(i=0;i<12;i++)
    if(tomb[i]%3==0)
    {
    eredmeny[j]=tomb[i];
    j++;
    }
    document.getElementById("three").innerHTML = eredmeny;
    }
    </script>

    var eredmeny=[];

    Előre azt mondtad, hogy az eredmény 12 elemű tömb lesz, de nem írtál bele annyi elemet, így a maradék undefined értéket vett fel. A new Array() helyett inkább a sokkal tömörebb [] szintaktikát használd.

    for(i=0;i<12;i++)
    {
    document.getElementById("tomb").innerHTML = tomb;
    }

    Itt a for ciklusnak semmi értelme sincsen.

    Szűrésre és egyéb tömbbel kapcsolatos műveletekre érdemes használni a JS filter/reduce/map feature-jeit, ha lehetőséged van rá, mert sokkal tömörebb és átláthatóbb kódot eredményez:

    var eredmeny = tomb.filter(function(e) {
    return e % 3 === 0;
    });

    Csak akkor használd a == és != operátorokat, ha szükséges a konverzió, minden egyéb esetben a === és !== operátorokat használd.

    Legyél konzekvens a központozásban, tedd ki mindig a space-eket az operátorok elé és mögé, valamint a sorok elejére a megfelelő behúzást.

    for(n=0;n<12;n++)
    if(tomb[n]%3==0)
    {
    eredmeny[j]=tomb[n];
    j++;
    }
    document.getElementById("three").innerHTML = eredmeny;
    }

    És kerüld az ilyen eseteket, mert első ránézésre azt hinné az ember, hogy az innerHTML módosítása is a for cikluson belül történik, ezért tedd ki a kapcsos zárójeleket:

    for (n=0; n < 12; n++)
    {
    if (tomb[n] % 3 === 0)
    {
    eredmeny[j] = tomb[n];
    j++;
    }
    }

    document.getElementById("three").innerHTML = eredmeny;

    Vagy a JavaScript szokások szerint írva:

    for (n=0; n < 12; n++) {
    if (tomb[n] % 3 === 0) {
    eredmeny[j] = tomb[n];
    j++;
    }
    }

    document.getElementById("three").innerHTML = eredmeny;

Új hozzászólás Aktív témák