Objektide süntaks ja struktuur

Objekt on andmestruktuur, mis koondab seotud andmed võtme ja väärtuse paaridena (nt auto mark, mudel ja aasta).

Meetod on objekti sees asuv funktsioon, mis teostab toiminguid selle objekti andmetega.

this võtmesõna viitab objektile enesele, võimaldades meetodil pääseda ligi sama objekti omadustele.

Objekti loomine ja omadustele ligipääs

Konspekt

Objekti loomine ja omadustele ligipääs

let auto = {
  mark: "Toyota",
  mudel: "Corolla",
  aasta: 2022,
  varv: "punane",
  lisavarustus: ["kliimaseade", "elektriaknad", "navigatsioonisüsteem"]
};

console.log(auto);
console.log(auto.mark); // Output: "Toyota"
console.log(auto.mudel); // Output: "Corolla"

Loodi objekt auto viie omadusega. Omadustele pääseb juurde punktisüntaksiga (nt auto.mark)

Meetodi loomine ja this kasutamine

let auto = {
  mark: "Toyota",
  mudel: "Corolla L",
  aasta: 2022,
  varv: "punane",
  omadused: ["kliimaseade", "elektriaknad", "navigatsioonisüsteem"],

  // lühendatud meetodi süntaks (ES6)
  taisnimi() {
    return this.mark + " " + this.mudel;
  },

  kuvaOmadused() {
    this.omadused.forEach(omadus => console.log(omadus));  
  }
};

console.log(auto.taisnimi());
auto.kuvaOmadused();

Meetod taisnimi() kasutab this võtmesõna, et võtta objekti seest mark ja mudel. Meetod kuvaOmadused() käib forEach tsükliga läbi massiivis olevad lisavarustuse elemendid.

Objektide massiiv ja meetodid (push, unshift, splice, find, filter, sort)

let autod = [
    { mark: 'Toyota', mudel: 'Corolla', aasta: 2007 },
    { mark: 'Honda', mudel: 'Civic', aasta: 2012 },
    { mark: 'Tesla', mudel: 'Model 3', aasta: 2019 }
];

// Elemendi lisamine lõppu ja algusesse
autod.push({ mark: 'BMW', mudel: '320i', aasta: 2015 });
autod.unshift({ mark: 'Ford', mudel: 'Focus', aasta: 2020 });
console.log("Massiiv pärast lisamisi:", autod);

// Otsimine (leiab esimese vastava objekti)
let otsing = autod.find(auto => auto.aasta > 2018 && auto.mark === "Tesla");
console.log("Otsingu tulemus:", otsing);

// Filtreerimine (uue massiivi loomine)
let filterTulemus = autod.filter(auto => auto.aasta > 2018);
console.log("Filtreeritud autod (uudsemad kui 2018):", filterTulemus);

// Sorteerimine aasta järgi
autod.sort((a, b) => a.aasta - b.aasta);
console.log("Sorteeritud autod aasta järgi:", autod);

Massiivi meetodid nagu push(), filter(), find() ja sort() töötavad objektide massiiviga samamoodi nagu tavaliste andmetüüpidega.

Ülesande lahendus

// 1. Raamatu objekt
let raamat = {
  pealkiri: "Tõde ja õigus I",
  autor: "A. H. Tammsaare",
  aasta: 1926,

  // 1.1 Kirjelduse kuva meetod
  kuvaKirjeldus() {
    return `Raamat: "${this.pealkiri}", autor: ${this.autor}, aasta: ${this.aasta}`;
  },

  // 1.2 Aasta muutmise meetod
  muudaAasta(uusAasta) {
    this.aasta = uusAasta;
  }
};

// Testime raamatu objekti
console.log(raamat.kuvaKirjeldus());
raamat.muudaAasta(1930);
console.log("Uus aasta:", raamat.kuvaKirjeldus());


// 2. Raamatukogu objekt
let raamatukogu = {
  // 2.1 Omadus raamatud (objektide massiiv)
  raamatud: [
    { pealkiri: "Tõde ja õigus I", autor: "A. H. Tammsaare", aasta: 1926 },
    { pealkiri: "Rehepapp", autor: "Andrus Kivirähk", aasta: 2000 },
    { pealkiri: "Kevade", autor: "Oskar Luts", aasta: 1912 },
    { pealkiri: "Serafima ja Bogdan", autor: "Vahur Afanasjev", aasta: 2017 }
  ],

  // 2.2 Kuva kõik raamatud
  kuvaKõik() {
    this.raamatud.forEach(r => {
      console.log(`Pealkiri: ${r.pealkiri}, Autor: ${r.autor}, Aasta: ${r.aasta}`);
    });
  },

  // 2.3 Lisa uus raamat
  lisaRaamat(pealkiri, autor, aasta) {
    this.raamatud.push({ pealkiri, autor, aasta });
  },

  // 2.4 Koguarv
  koguarv() {
    return this.raamatud.length;
  },

  // 2.5 Raamatud pärast 2000. aastat
  parast2000() {
    return this.raamatud.filter(r => r.aasta > 2000).length;
  },

  // 2.6 Oma kohandatud meetod: otsi raamatut pealkirja järgi
  // Selgitus: Meetod otsib "find" abil massiivist raamatut pealkirja alusel ja tagastab leitud objekti.
  otsiPealkirjaga(otsitavPealkiri) {
    return this.raamatud.find(r => r.pealkiri.toLowerCase() === otsitavPealkiri.toLowerCase());
  }
};

// Tulemuste testimine konsoolis
raamatukogu.lisaRaamat("Kõrboja peremees", "A. H. Tammsaare", 1922);
console.log("--- Kõik raamatukogu raamatud ---");
raamatukogu.kuvaKõik();
console.log("Raamatuid kokku:", raamatukogu.koguarv());
console.log("Ilmunud pärast 2000. aastat:", raamatukogu.parast2000());
console.log("Otsing ('Rehepapp'):", raamatukogu.otsiPealkirjaga("Rehepapp"));

Link domeenile https://mihkelunt.eu