Pole v Javascriptu

Pole umo╛≥uje mφt v jednΘ prom∞nnΘ vφce hodnot. To je dost u╛iteΦnß v∞c.

P°φklad se jmΘny dn∙

Budu chtφt, aby mi javascript vypsal Φesky dne╣nφ den, t°eba pond∞lφ. Objekt Date() znß aktußlnφ datum a pomocφ metody getDay() se z toho dß vytßhnout Φφslo dne. ProblΘm je, jak z toho Φφsla dostat t°eba "pond∞lφ". To prßv∞ °e╣φ pole.

Pole se v Javascriptu zaklßdß t°eba takhle:

var prom∞nnß = new Array("prvnφ hodnota", "druhß hodnota");

konkrΘtn∞ u dnφ v t²dnu to bude nap°φklad:

denJakoSlovo = new Array("ned∞le", "pond∞lφ", "·ter²", "st°eda", "Φtvrtek", "pßtek", "sobota");

Kdy╛ potom t°eba zavolßm denJakoSlovo[0], vrßtφ mi hodnotu "ned∞le". PoΦφtß se to od nuly. Tak╛e cel² p°φklad:

<script>
datum = new Date(); // vytßhne dne╣nφ datum
denJakoCislo = datum.getDay()
// v tuto chvφli mßm den v t²dnu jako Φφslo od nuly do ╣esti

denJakoSlovo = new Array("ned∞le", "pond∞lφ", "·ter²", "st°eda", "Φtvrtek", "pßtek", "sobota");
// to je to pole poΦφtanΘ anglosasky od ned∞le

document.write("Dnes je ");
document.write(denJakoSlovo[denJakoCislo]);
// vypisuju polo╛ku pole s aktußlnφm (Φφseln²m) indexem
</script>

Zobrazit p°φklad.

JinΘ zp∙soby prßce s polem

Namφsto konstrukce prom∞nnß = new Array() se m∙╛e psßt

promenna = ["hodnota0", "hodnota1","hodnota2"];

P°itom se hodnoty automaticky poΦφtajφ (indexujφ) od nuly. Tak╛e nap°. promenna[1] je rovno "hodnota1".

Kdykoliv se m∙╛e p°idat dal╣φ hodnota:

promenna[3] = "hodnota3";

Nebo zm∞nit stßvajφcφ hodnota:

promenna[2] = "druhß hodnota";

Tomu Φφslu v hranat²ch zßvorkßch se °φkß index. Pokud nenφ uvedeno jinak, jsou indexy Φφsla od nuly. Indexem m∙╛e b²t takΘ °et∞zec:

promenna["ahoj"] = "nazdar";

V p°edchozφch ukßzkßch byly hodnoty pole °et∞zce (zapisovanΘ v uvozovkßch). Ale mohou to b²t stejn∞ tak Φφsla.

promenna[8] = 1260;

Pole m∙╛e vzniknout jako v²sledek n∞jakΘ metody. Kdybych m∞l °adu Φφsel odd∞lenou Φßrkami, pak ji do pole rozd∞lφm pomocφ funkce split:

rada= "prvnφ,druhß,t°etφ,Φtvrtß";
var poleRada = rada.split(",");
alert(poleRada[1]) // vypφ╣e druhß (je to od nuly)

DΘlka pole

Ka╛dΘ pole mß vlastnost .length, kterΘ v∞t╣inou urΦuje poΦet hodnot v poli. P°esn∞ji °eΦeno urΦuje nejvy╣╣φ Φφseln² index plus jedna. Co╛ ve v∞t╣in∞ p°φpad∙ (kdy╛ se indexy nechßvajφ vznikat automaticky, kdy╛ se Φφsla index∙ nevynechßvajφ a nedßvajφ se °et∞zcovΘ indexy) poΦtu hodnot v poli odpovφdß.

DΘlka pole promenna.length se v praxi pou╛φvß hlavn∞ na dv∞ v∞ci:

Prochßzenφ pole cyklem

for(i=0;i<promenna.length;i++){
    // n∞co se d∞lß s promenna[i]
}

Pomocnß prom∞nnß i se zv∞t╣uje od nuly a╛ do nejvy╣╣φho indexu.

V²b∞r nßhodnΘ polo╛ky

nahodnaHodnotaZPole = promenna[Math.floor(Math.random()*promenna.length)];

Math.floor je zaokrouhlovßnφ dol∙ (pole je poΦφtßno od nuly, tak╛e floor se p°esn∞ hodφ), Math.random() vracφ nßhodnΘ Φφslo od nuly do jedniΦky.

P°φklad: vypsßnφ nßhodnΘho p°φslovφ

<script>

prislovi = new Array(
"Odbornφk je Φlov∞k, kter² vφ, co v danΘm oboru neumφ.", // odd∞leno Φßrkami
"Hudba zdvojnßsobφ ka╛d² p°φb∞h.",
"U ohn∞ je jeden hlas lep╣φ ne╛ t°i kytary.",
"Jeden obrßzek se stahuje stejn∞ dlouho jako tisφc slov.",
"Neexistuje n∞co jako hloupß otßzka."
);

// v²poΦet, kterΘ p°φslovφ se bude vypisovat
index = Math.floor(Math.random()*prislovi.length);

// zßpis do dokumentu
document.write(prislovi[index]);

</script>

Zobrazit p°φklad.

Star╣φ prohlφ╛eΦe

Myslφm, ╛e t°etφ verze prohlφ╛eΦ∙ je╣t∞ neum∞jφ s objektem Array pracovat tak, jak popisuji v²╣e. Pro ty se muselo pole zaklßdat jako zvlß╣tnφ objekt (funkce jako konstruktor) a p°i°azovat mu hodnoty (jako argumenty konstruktoru). Dnes takov² zdlouhav² postup pova╛uji za zbyteΦn², ale kdyby to snad n∞kdo pot°eboval:

function stareArray()
{
this.length = stareArray.arguments.length;
for (var i = 0; i < this.length; i++)
this[i] = stareArray.arguments[i];
}
/* Napln∞nφ pole */
promenna = new stareArray("hodnota","hodnota1","hodnota2 atd.");

Funguje to stejn∞ jako normßlnφ pole.

o tvorb∞, ·dr╛b∞ a zlep╣ovßnφ internetov²ch strßnek

Nßvody HTML CSS JavaScript
Pφ╣e Yuh∙, dusan@pc-slany.cz

Hledßnφ:

Javascript na www.jakpsatweb.cz

Pφ╣e Yuh∙: http://dusan.pc-slany.cz, mail: dusan@pc-slany.cz

Poslednφ aktualizace 10.12.2003