Ú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, neboundefined.
-
-
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í
returna 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.htmlascript.js. -
Do stránky vypisuje pomocí
document.write().
Požadovaný výstup:
-
Vytvoř pole
spojeobsahující alespoň 4 objekty s vlastnostmi:-
linka(např. "120"), -
cil(např. "Hlavní nádraží"), -
odjezd(např. "14:35").
-
-
Pomocí map() vytvoř nové pole všech cílových stanic a vypiš ho.
-
Pomocí filter() vyber všechny spoje, které odjíždějí po 15:00, a vypiš je.
-
Pomocí find() najdi spoj s konkrétní linkou (např.
"120") a vypiš jeho údaje. -
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
returnv callback funkcích.
Řešení úlohy
Co je zde splněno
-
Vytvořeno pole
spojese 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.