Programovanie v JavaScripte,

časť 4

Pre úplných začiatočníkov

Funkcie a premenné

Funkcia môže byť uložená do premennej

function foo() {
    console.log('funkcia foo');
}

var bar = function () {
    console.log('funkcia uložená v bar');
};

foo();
bar();

Metódy

Funkcia môže byť uložená do property

Takejto funkcii sa vraví metóda

var fero = {
    pozdrav: function (textPozdravu) {
        console.log(
            '"' + textPozdravu + '", vraví Fero'
        );
    }
};

Metódy

Vo vnútri metódy viete pristupovať k ostatným vlastnostiam objektu pomocou this

var fero = {
    vyska: 183,

    zmenVysku: function (novaVyska) {
        this.vyska = novaVyska;
    }
};

fero.zmenVysku(190);

Úloha:

Napíšte pre objekt karel metódy dolava a doprava, ktoré otočia Karla a ešte aj zmenia hodnotu property smer

var SEVER = 'sever';
var JUH = 'juh';
var VYCHOD = 'vychod';
var ZAPAD = 'zapad';

var karel = {
    smer: SEVER,

    doprava: function () {
        otocDoprava();
        
        if (this.smer === SEVER) {
            this.smer = VYCHOD;
        } else if (this.smer === VYCHOD) {
            this.smer = JUH;
        } else if (this.smer === JUH) {
            this.smer = ZAPAD;
        } else {
            this.smer = SEVER;
        }
    }
};

Mohli by sme metódy nazvať otocDoprava a otocDolava?

Mohli

Pretože metódy patria objektu

a nie sú "globálne"

Malá odbočka

Príkaz switch

if (this.smer === SEVER) {
    this.smer = VYCHOD;
} else if (this.smer === VYCHOD) {
    this.smer = JUH;
} else if (this.smer === JUH) {
    this.smer = ZAPAD;
} else {
    this.smer = SEVER;
}
switch (this.smer) {
    case SEVER:
        this.smer = VYCHOD;
        break;

    case VYCHOD:
        this.smer = JUH;
        break;

    case JUH:
        this.smer = ZAPAD;
        break:

    case ZAPAD:
        this.smer = SEVER;
        break;
}

Polia

Pole

Pole / array

Pole je neštruktúrované zoskupenie viacerých prvkov v jednej premennej

Prvky sú zoradené a každý má svoju (číselnú) pozíciu

Vo väčšine jazykov je to samostatný dátový typ

V JavaScripte nie. Tam je pole objekt

Pole / array

var objekt = {
    meno: 'Ferko',
    priezvisko: 'Mrkvička',
    vek: 42,
    vyska: 183,
};

console.log(objekt.meno);
console.log(objekt.vyska);

objekt.hmotnost = 75;
var pole = [
    'čierna',
    'biela',
    'červená',
    'zelená',
];

console.log(pole[0]);
console.log(pole[3]);

pole[4] = 'modrá';

Dĺžka poľa

Počet prvkov v poli

Najvyššie číslo pozície + 1

var pole = [
    'cierna',
    'biela',
    'cervena',
    'zelena',
];

console.log(
    pole.length
);

Použitie napr. pri pridávaní prvky vždy na koniec poľa:

pole[pole.length] = 'fialová';
pole[pole.length] = 'žltá';
pole[pole.length] = 'sivá';

Pole je v JS objekt

A objekty majú metódy

pole.push(prvok) pridá na koniec poľa prvok
prvok = pole.pop() odoberie prvok z konca poľa
pole.unshift() / pole.shift() push() a pop() pre začiatok poľa
novePole = pole.filter(funkcia) prefiltruje pole pomocou funkcie
prvok = pole.find(funkcia) nájde prvok v poli
novePole = pole.map(funkcia) nad každým prvok zavolá funkciu a vráti nové pole

Zadanie:

Vytvorte premennú riadok, ktorá bude predstavovať spodný riadok na mape a bude typu pole.

Každý prvok poľa bude hovoriť, či sa na danom políčku nachádza (1) alebo nenachádza (0) značka.

Otočte Karla doprava, nechajte ho prejsť cez celý spodný riadok a na párnom políčku uložte značku.

Zároveň si do premennej riadok zapisujte, kde ste položili značku.

Na začiatku v riadku nie sú žiadne značky (zapíšte to do poľa).