/ janturon.cz / Výuka / Javascript / Hash

Pole a cykly

Hash

Hash je lehká droga z marihuany. Krom toho je to také transformace vstupní množiny do nějaké menší množiny. Což je vlastně funkce vyjádřitelná i dvousloupcovou tabulkou. Tu lze nejlépe zapsat jako asociativní pole. No a v Javascriptu je hash, asociativní pole a objekt jedno a totéž. Síla, že? Udělejme si vlastní hash:

var vowels = {a:1, e:5, i:9, o:15, u:21, y:25}; alert("i je v abecedě na pozici "+vowels.i);

Je to podobné jako s poli, rozdíly jsou:

K prvkům hashe můžeme přistupovat i pomocí hranatých závorek následující zápisy jsou tedy ekvivalentní (všimněte se uvozovek)

vowels.i vowels["i"]

JSON

Protože hodnoty mohou být cokoliv - třeba funkce, pole nabo další hashe - jde takto zapsat plnohodnotné objekty. Všimněte si, že tato syntaxe dokáže plně nahradit XML. A tento zápis se pro přenos formátovaných dat skutečně často používá, říká se mu JSON (JavaScript Object Notation).

Praktičtější příklad

Objekt Array postrádá metodu pro součet prvků. Vytvořme hash pro práci s číselnými poli:

var numbers { data: [], sum: function() { var result = 0; for(var i=0; i<numbers.data.length; i++) { result+= numbers.data[i]; } return result; } }; numbers.data = [2,4,6,8,10,12]; alert(numbers.sum()); // 42

Prototype a this

Javascript umožňuje i přidat vlastní členy k již existujícímu objektu. Dokonce i k nativním objektům jako je Array. Dá se to udělat přes člen prototype, ke členům objektu je možné přistupovat přes ukazatel this.

Array.prototype.sum = function() { var result = 0; for(var i=0; i<this.length; i++) { result+= this[i]; } return result; } alert([2,4,6,8,10,12].sum()); // 42

 

Úkoly

Návod: lze využít operátoru %, který vrací zbytek po dělení. Funkce na testování sudosti by mohla vypadat takto:

function isEven(n) { return n%2==0; }