Úloha 3 – Tvorba, filtrování a vyhledávání v poli objektů

Website: Moodle ZČU
Kurs: Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný)
Buch: Úloha 3 – Tvorba, filtrování a vyhledávání v poli objektů
Gedruckt von: Nepřihlášený host
Datum: Sonntag, 18. Oktober 2026, 13:18

Úvod do úlohy

Jakmile si osvojíme základní způsoby procházení pole objektů pomocí cyklů (for, for…of, forEach), nastává čas seznámit se s moderními metodami polí. Ty nám umožňují zapsat operace nad celými kolekcemi stručněji, přehledněji a efektivněji – bez ručního psaní cyklů. Mezi nejčastější patří:

  • map() – vytvoří nové pole hodnot na základě transformace původního pole.

  • filter() – vybere jen ty prvky, které splňují určitou podmínku.

  • find() – najde a vrátí první prvek odpovídající podmínce.

Tyto metody jsou nesmírně užitečné při práci s daty – například když chceme získat seznam všech emailů, filtrovat uživatele podle věku nebo najít konkrétní položku podle jména.


Teorie a principy

  • map()

    • Vstup: pole objektů.

    • Výstup: nové pole, kde každý prvek vznikl transformací původního.

    • Typický příklad: získání všech hodnot určité vlastnosti.

  • filter()

    • Vstup: pole objektů.

    • Výstup: nové pole pouze s těmi prvky, které splňují danou podmínku.

    • Typický příklad: vybrat všechny studenty starší než 25 let.

  • find()

    • Vstup: pole objektů.

    • Výstup: první nalezený objekt, který odpovídá podmínce.

    • Typický příklad: najít uživatele se zadaným jménem.


Praktické příklady kódu


Typické chyby / záludnosti

  • Záměna metod:

    • map() vrací nové pole se stejnou délkou jako původní.

    • filter() může vrátit méně prvků (nebo i prázdné pole).

    • find() vrací jen jeden objekt, nebo undefined.

  • Zapomenutí return uvnitř callback funkce – bez něj metoda nevrátí správné hodnoty.

  • Očekávání, že find() vrátí více výsledků – ne, vždy jen první nalezený. Pokud potřebujeme více, použijeme filter().

  • Neúplná podmínka – studenti někdy zapomenou porovnávat konkrétní vlastnost (student == "Eva" je špatně, správně student.name == "Eva").


Shrnutí

  • map() – transformuje pole objektů na pole hodnot (např. jen emaily).

  • filter() – vybere podmnožinu objektů, které splňují podmínku.

  • find() – vrátí první nalezený objekt podle podmínky.

  • Všechny tři metody výrazně zjednodušují práci oproti ručnímu psaní cyklů.

  • Pozor na správné použití return a rozdíly mezi metodami.

Úloha

Zadání (kontext úlohy):

Máš seznam spojů veřejné dopravy. Každý spoj je objekt s číslem linky, cílovou stanicí a časem odjezdu. Tvým úkolem je získat z těchto dat různé informace pomocí metod map(), filter() a find().


Cíl úlohy:

Procvičit si práci s poli objektů a použití metod map, filter a find v jiném kontextu než uživatelé nebo produkty.


Vstupní podmínky:
  • Student pracuje se soubory index.html a script.js.

  • Do stránky vypisuje pomocí document.write().


Požadovaný výstup:
  1. Vytvoř pole spoje obsahující alespoň 4 objekty s vlastnostmi:

    • linka (např. "120"),

    • cil (např. "Hlavní nádraží"),

    • odjezd (např. "14:35").

  2. Pomocí map() vytvoř nové pole všech cílových stanic a vypiš ho.

  3. Pomocí filter() vyber všechny spoje, které odjíždějí po 15:00, a vypiš je.

  4. Pomocí find() najdi spoj s konkrétní linkou (např. "120") a vypiš jeho údaje.

  5. Pokud spoj s danou linkou neexistuje, vypiš hlášku „Spoj nebyl nalezen“.


Doplňující pokyny:
  • Hodnoty času můžeš pro jednoduchost porovnávat jako řetězce (např. "14:35" < "15:00").

  • Odděluj části výstupu <hr> pro čitelnost.

  • Nezapomeň na return v callback funkcích.

Řešení úlohy

Co je zde splněno

  • Vytvořeno pole spoje se 4 objekty (linka, cil, odjezd).

  • map() vrací pole cílových stanic a je vypsáno.

  • filter() vybere spoje po „15:00“ a ty jsou vypsány.

  • find() vyhledá konkrétní linku „120“, včetně ošetření nenalezeného výsledku (hláška).

  • Jednotlivé části výstupu jsou odděleny <hr>.

  • V callback funkcích je použit return.