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