Úloha 4 – Filtrování a textový výstup z pole objektů
Úvod do úlohy
Řetězení metod (method chaining) je technika, která umožňuje skládat více operací nad polem do jednoho čitelného „potrubí“. Místo několika mezikroků si data nejprve vyfiltrujeme (filter()), pak je přetransformujeme (map()) a nakonec zformátujeme do textu (join()), případně do HTML seznamu. V praxi tak snadno vytvoříš výstupy typu „Seznam všech odjezdů po 15:00 ve formátu Linka – cíl (čas)“ bez ručního psaní cyklů a dočasných proměnných.
Teorie a principy
-
Řetězení funguje díky tomu, že
filter()amap()vrací nové pole, na kterém můžeš hned volat další metodu. -
Typické pořadí je
filter().map().join():-
filter()– zmenší data na relevantní podmnožinu. -
map()– přetvoří prvky (např. objekt → řetězec). -
join()– spojí pole řetězců do jednoho textu s oddělovačem.
-
-
Pořadí záleží:
map().filter()často dělá zbytečnou práci navíc (nejdřív transformuješ vše, i to, co nakonec vyhodíš). -
Čitelnost: i když je řetězení krátké, vždy přidej komentář a udrž logiku srozumitelnou.
-
Podmínky piš explicitně (např.
if (spoje.length > 0 == true)) – pro začátečníky je to přehlednější (ekvivalent zkrácení:if (spoje.length > 0)).
Praktické příklady kódu
Pozor: v příkladech výše je záměrně použito porovnávání časů jako řetězců
HH:MM. Aby fungovalo správně, dbej na dvě číslice u hodin i minut (např."08:05"místo"8:5").
Typické chyby / záludnosti
-
Zapomenuté
returnv callbacku umap()/filter()– bez něj se vracíundefineda řetězení selže. -
Záměna výsledných typů:
-
filter()amap()vrací pole, lze pokračovatmap()nebojoin(). -
find()vrací jeden objekt (neboundefined), nejde na něj volatjoin().
-
-
Nesprávné pořadí operací –
map().filter()zbytečně zatěžuje běh (nejprve převeď vše, potom vyhoď část). Lepší jefilter().map(). -
Nevalidní formát času –
"8:30" > "15:00"vrací true, což je špatně pro záměr. Použij"08:30". -
Chybné spojení při tvorbě HTML –
join(", ")by v<ul>přidával čárky mezi<li>. Do HTML seznamu proto spojuj prázdným řetězcem"".
Shrnutí
-
Řetězení metod dává čitelný „tok“ zpracování:
filter()→map()→join(). -
filter()zmenšuje data,map()je formátuje,join()z nich udělá finální text. -
Na jednotlivý prvek použij
find()a teprve pak jej formátuj do textu. -
Dodržuj validní časový formát
HH:MMa piš explicitní podmínky. -
Při tvorbě HTML seznamů zvol vhodný oddělovač v
join()(pro<li>často"").