Pole umo╛≥uje mφt v jednΘ prom∞nnΘ vφce hodnot. To je dost u╛iteΦnß v∞c.
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>
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)
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:
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.
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.
<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>
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