E-gradiva > Računalništvo > Programiranje > Načrtovanje in razvoj spletnih aplikacij > Javascript > Predefinirani razredi > Razred Array

Prijava

Razred Array

Objekt razreda Array predstavlja polje vrednosti, ki so lahko različnih tipov. Elementi polja so indeksirani z nenegativnimi celimi števili. Dolžina polja je najmanjše celo število, za katerega so indeksi vseh elementov strogo manjši. Če v polju definiramo nov element, se ustrezno popravi tudi dolžina. Če spremenimo dolžino, uničimo vse elemente, ki so imeli indeks večji ali enak novi dolžini.

Namesto s konstruktorjem lahko novo polje ustvarimo kar z uporabo oglatih oklepajev, med katerimi naštejemo vse njene elemente (seznam elementov je lahko tudi prazen). Pri tem bo prvi element dobil indeks 0, naslednji indeks 1 ... Elementi polja so lahko poljubnega tipa, torej tudi objekti in druga polja. Prazno polje zapišemo kot [], primer nepraznega polja pa bi bil: [10, true, "Janez", null, 1 - 3.4].

Posamezen element polja lahko pustimo nedoločen, tako da ne vpišemo ničesar. Tako ima polje [1,2,,4] štiri elemente, pri čemer je vrednost tretjega elementa nedefinirana (undefined). Če pustimo prazen zadnji element v polju, ga program ne bo štel k polje (Internet Explorer tega pravila žal ne upošteva). Tako je dolžina polja [1,2,3,] tri in ne štiri, kot bi pričakovali. Če želimo nedefinirani element imeti na koncu polja, ga moramo vpisati kot undefined.  

 

Razred Array – konstruktorji in lastnosti

Konstruktorji

–     Array() Sestavi nov objekt razreda Array, ki ne vsebuje nobenih elementov (prazno polje).

–     Array(dolžina) Sestavi nov objekt razreda Array, ki vsebuje dano število elementov nedoločene vrednosti.

–     Array(...) Sestavi nov objekt razreda Array, ki vsebuje elemente, ki jih damo za parametre.

Lastnosti 

–     array.length dolžina polja.

 

Metode razreda Array

array.toString() Vrne niz z opisom posameznih elementov.

array.toString() Vrne niz z opisom posameznih elementov. Vsak element pretvori v niz glede na regionalne nastavitve, in jih zapiše v seznam, kjer uporabi ločilo, ki je spet odvisno od regionalnih nastavitev.

array.concat(...) Vrne polje, ki vsebuje elemente polja array, nato pa še po vrsti elemente, ki jih dobi metoda za parameter. Če je kateri od elementov polje, doda vsak njegov element posebej.

array.join(ločilo) Vrne niz, ki ga dobi tako, da vsak element polja pretvori v niz, dobljene nize pa združi v en sam niz, pri čemer uporabi dano ločilo. Privzeto ločilo je vejica.

array.pop() Iz polja odstrani in vrne njen zadnji element. Če je polje prazno, vrne undefined.

array.shift() Iz polja odstrani in vrne njen prvi element. Če je polje prazno, vrne undefined.

array.push(...) Elemente, ki jih damo za parametre, doda na konec polja v istem vrstnem redu. Metoda vrne novo dolžino polja.

array.unshift(...) Elemente, ki jih damo za parametre, doda na začetek polja v istem vrstnem redu. Metoda vrne novo dolžino polja.

array.reverse() Obrne vrstni red elementov v tabeli. Vrne spremenjeno polje.

array.slice(začetek, konec) Vrne podpolje polja array, ki vsebuje elemente na mestih z indeksi, ki so večji ali enaki začetek in strogo manjši od konec. Če je kateri od indeksov negativen, izračuna ustrezen pozitiven indeks, pri čemer elemente šteje od konca proti začetku (-1 je indeks zadnjega elementa). Če je začetek večji od konca, vrne prazno polje.

array.sort(primerjaj) Uredi polje array glede na dano funkcijo. Funkcija primerjaj mora sprejeti dva parametra, vrniti pa mora 0, če sta enaka, negativno vrednost, če je prvi manjši od drugega, sicer pa pozitivno vrednost. Metoda vrne urejeno polje.

array.splice(začetek, koliko ...) Prvih koliko elementov polja array od mesta začetek naprej nadomesti z elementi, ki sledijo prvima dvema parametroma. Metoda vrne polje, ki vsebuje odstranjene elemente.

 

Izpis polja z operatorjem lenght

 

// funkcija za izpis elementov polja z uporabo lastnosti lenght

             function izpisiPolje( glava, polje )

            {

                document.writeln( "<h2>" + glava + "</h2>" );

                document.writeln( "<table border = \"1\" width =" +

                   "\"100%\">" );

      

                document.writeln( "<thead><th width = \"100\"" +

                   "align = \"left\">Indeks</th>" +

                   "<th align = \"left\">Vrednost</th></thead><tbody>" );

      

               for ( var i = 0; i < polje.length; i++ )

                   document.writeln( "<tr><td>" + i + "</td><td>" +

                     polje[ i ] + "</td></tr>" );

   

                document.writeln( "</tbody></table>" );

             } // konec izpisiPolje

 

 Funkcija ob klicu:

            izpisiPolje("Polje 2 vsebuje:", polje2 );

 izpiše tudi nedefinirane vrednosti, če celotno polje ni inicializirano.

 

 

Izpis polja z operatorjem "in"

 

  // funkcija za izpis elementov polja s pomočjo operatorja in

            function izpisiPolje_z_in( glava, polje )

            {

                document.writeln( "<h2>" + glava + "</h2>" );

                document.writeln( "<table border = \"1\" width =" +

                   "\"100%\">" );

      

                document.writeln( "<thead><th width = \"100\"" +

                   "align = \"left\">Indeks</th>" +

                   "<th align = \"left\">Vrednost</th></thead><tbody>" );

      

               for ( var i in polje )

                   document.writeln( "<tr><td>" + i + "</td><td>" +

                     polje[ i ] + "</td></tr>" );

   

                document.writeln( "</tbody></table>" );

             } // konec izpisiPolje_z_in

 

 

Funkcija ob klicu:

            izpisiPolje_z_in ("Polje 2, izpisano s pomočjo operatorja in vsebuje:", polje2 ); 

izpiše samo definirane vrednosti, če celotno polje ni inicializirano.

 

 

Inicializacija polja


          function inicializirajPolje()

             {

               var polje1 = new Array( 5 );   // alokacija 5 elementov polja

               // prireditev vrednosti polju polje1 

               for ( var i = 0; i < polje1.length; i ++)    

                   polje1[ i ] = i;

               izpisiPolje( "Polje 1 vsebuje:", polje1 );  

              

               var polje2 = new Array();      // alokacija praznega polja - dolžina še ni definirana

                // prireditev vrednosti polja2 - dimenzija se določi z največjim indeksom

                for ( var i = 0; i < 4; i ++)    

                   polje2[ i ] = i; 

                polje2[7]=3;              

                izpisiPolje("Polje 2 vsebuje:", polje2 );

              

               var cela1 = [ 2, 4, 6, 8 ];

               var cela2 = [ 2, , , 8 ];

               var barve= new Array( "cyan", "magenta","yellow", "black" );         

               izpisiPolje("Polje cela1 vsebuje", cela1);

               izpisiPolje("Polje cela2 vsebuje", cela2 );

               izpisiPolje("Polje barve vsebuje", barve );

             } // konec inicializirajPolje

 


Funkcija za vnos polja s pomočjo window.prompt

 

// funkcija za vnos elementov polja s pomoèjo metode window.prompt

  function vnesiPolje(polje)

  {

   var stevilo_elementov=  window.prompt( "Vnesi število elementov", "0" );

   var n=parseInt(stevilo_elementov);

   for (i=0; i<n; i++)

    {      

     var stevilo=  window.prompt( "Vnesi element", "0" );

     polje[i]=parseInt(stevilo);

     } // konec for

   } // konec vnesiPolje

 

Naključno generiraj elemente polja

 

// Naključno generiranje elementov polja, ki imajo vrednosti med

// 1 in 6

function generiraj(polje)

{  

    for ( i = 0; i < 5; i++ )

       polje[ i ] = Math.floor( 1 + Math.random() * 6 );

 } // konec generiraj

 

//demostracija klica funkcije:

var polje2 = new Array(5);

generiraj(polje2);

izpisiPolje("Izpis elementov generiranega polja",polje2);

 

Izračunaj vsoto

 

                        // funkcija za izraèun vsote elementov polja s pomočjo lastnosti lenght

               function izracunajVsoto(polje)

               {

                       var vsota=0;

                       for (var i=0; i< polje.lenght; i++)

                          vsota+=polje[i];

                       return vsota;

               } // konec izracunajVsoto

               //funkcija za izračun vsote elementov polja z operatorjem in

               function izracunajVsotozin(polje)

               {

                       var vsota=0;

                       for (var i in polje)

                          vsota+=polje[i];

                       return vsota;

               } //konec izracunajVsotozin

 

 

Klici po referenci in vrednosti

 Vsaka spremenljivka, ki ni objekt ( število, logična vrednost, niz znakov) in je parameter funkcije, je klicana po vrednosti.

Vsaka spremenljivka, ki je objekt (definira ga programer ali pa je primerek razredov Boolean, Number , StringMath, Date, Array in je parameter funkcije, je klicana po referenci).

 

Primer

 

//funkcija za demonstracijo klica po referenci

 function klici_po_referenci(polje)

 {polje[1]=555; }

              

//funkcija za demonstracijo klica po vrednosti

function klici_po_vrednosti (a)

  {a=666; }

Primer klica funkcij:

 // demonstracija klica po referenci

 document.write("Demonstracija klica po referenci: <br />");

izpisiPolje("Izpis polja pred klicem po referenci",polje1);

klici_po_referenci(polje1);

izpisiPolje("Izpis polja po klicu po referenci",polje1);

 //demonstracija klica po vrednosti

document.write("Demonstracija klica po vrednosti: <br />");

izpisiPolje("Izpis polja pred klicem po vrednosti",polje1);

klici_po_vrednosti(polje1[2]);

izpisiPolje("Izpis polja po klicu po vrednosti",polje1);

 

 

Iskanje elementa v polju


function poisci(polje,x)

 {

     for (var i in polje)

        if (polje[i]==x) return i;

     return -1;

 } // konec poisci

 

 // demostracija klica funkcije:

if (poisci(polje1,5)>-1)

   document.write("Element 5 se nahaja na " + poisci(polje1,5)+". mestu v polju. <br />");

 else document.write("Elementa 5 ni v polju <br />");

 if (poisci(polje1,7)>-1)

   document.write("Element 7 se nahaja na " + poisci(polje1,7)+". mestu v polju. <br />");

else document.write("Elementa 7 ni v polju <br />");

 

 

Urejanje polja


//funkcija, ki primerja dve vrednosti in vrne njuno razliko

function primerjaj(a,b)

{return a-b;}

              

//demonstracija urejanja polja s pomoèjo funkcije sort

function uredi(polje)

{

   izpisiPolje("Polje  pred urejanjem vsebuje naslednje elemente", polje);

   polje.sort(primerjaj);  // uredi elemente polja po velikosti glede na funkcijo primerjaj

   izpisiPolje("Urejeno polje vsebuje naslednje elemente:", polje );

} // konec funkcije uredi

 

 

Asociativna polja

 

Asociativna polja 

<html>

<body>

   <script language="javaScript">

    function kaksen_avto()

     {

       var avto= new Array()

       avto["terenski"]="LandRover";

       avto["druzinski"]="Ford mondeo ";

       avto["luksuzni"]="Mercedes";

       avto["srednji"]="Ford Focus";

       avto["mali"]="Ranault twingo";

       var tip_avta=window.prompt("Kakšen avto želiš?","");

       if ((tip_avta=="terenski") || (tip_avta=="druzinski") || (tip_avta=="luksuzni")||

           (tip_avta=="srednji") ||      (tip_avta=="mali"))

            alert("Svetujem ti "+avto[tip_avta]+".");

         else

           alert("Takšnega tipa avta ne poznam");

       }  

   </script>

   <form>

       <input type="button" onClick="kaksen_avto()" value="Poišci!">

   </form>

  </body>

</html>