Úloha 3 – Spread operátor v praxi: kopie, spojování, slice
| Stránky: | Moodle ZČU |
| Kurz: | Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný) |
| Kniha: | Úloha 3 – Spread operátor v praxi: kopie, spojování, slice |
| Vytiskl(a): | Nepřihlášený host |
| Datum: | neděle, 18. října 2026, 05.58 |
Úvod do úlohy
Spread operátor (...) patří k moderním a velmi praktickým nástrojům jazyka JavaScript. Umožňuje „rozbalit“ obsah pole (nebo jiné iterovatelné struktury) tak, jako bychom jednotlivé prvky vypsali ručně. Díky tomu dokážeme jednoduše vytvářet kopie polí, spojovat je dohromady nebo elegantně měnit jejich části. Kód se tím stává kratším, čitelnějším a zároveň bezpečnějším, protože se vyhneme ručnímu přepisování prvků.
Teorie a principy
-
Spread operátor
...:-
Rozloží pole na jeho prvky.
-
Používá se uvnitř
[]pro tvorbu nových polí nebo u funkcí jako argument.
-
-
Kopie pole:
const novePole = [...puvodniPole];vytvoří novou kopii, která není propojena s původním polem (mělká kopie). -
Spojování polí: Místo
concat()můžeme přímo napsat[...pole1, ...pole2]. -
Kombinace se slice(): Pomocí
slice()si vybereme část pole a pak ji rozbalíme do nového pole společně s jinými prvky. -
Omezení – mělká kopie: pokud pole obsahuje objekty nebo vnořená pole, spread zkopíruje pouze odkazy, nikoli celé struktury.
Praktické příklady kódu
1. Kopírování pole
2. Spojování polí
3. Kombinace se slice()
4. Ukázka mělké kopie
Typické chyby / záludnosti
-
Záměna se zkratkou:
...funguje jen při vytváření nových polí nebo volání funkcí, samostatně nedává smysl. -
Očekávání hluboké kopie: spread kopíruje jen odkazy na objekty uvnitř pole, takže u složitějších dat není nezávislý.
-
Zapomenutí na hranaté závorky:
...polebez[]nemá význam. -
Příliš složité zápisy: i když lze spread řetězit, někdy je lepší kód rozdělit na více kroků pro čitelnost.
Shrnutí
-
Spread operátor
...rozbaluje prvky pole. -
Umožňuje rychlé kopírování a spojování polí.
-
Ve spojení se slice() dokáže elegantně vytvořit nové varianty pole.
-
Výsledný kód je kratší a přehlednější než ruční manipulace.
-
Spread vytváří pouze mělkou kopii – u vnořených struktur to může vést k nečekanému chování.
Úloha
Zadání (kontext úlohy):
Máš seznam programovacích jazyků. Potřebuješ vytvořit jeho kopii, spojit jej s dalším seznamem, vynechat některé prvky a přidat nové. To vše provedeš pomocí spread operátoru ....
Cíl úlohy:
Procvičit použití spread operátoru pro:
-
vytvoření kopie pole,
-
spojování více polí,
-
kombinaci se slice() pro úpravy pole.
Vstupní podmínky:
Student pracuje pouze s nově vytvořeným souborem script.js.
Požadovaný výstup:
-
Vytvoř pole
frontends hodnotami["HTML", "CSS", "JavaScript"]. -
Pomocí spreadu vytvoř kopii tohoto pole do
kopiea přidej do něj nový jazyk"TypeScript". Vypiš obě pole do konzole (aby bylo vidět, že původní se nezměnilo). -
Vytvoř pole
backends hodnotami["Node.js", "SQL"]a spoj ho sfrontenddo nového polefullstackpomocí spreadu. Vypiš do konzole. -
Pomocí
slice()a spreadu vytvoř nové polemoderni, kde zfrontendvynecháš"HTML"a přidáš"React". -
Vypiš všechna pole do konzole, aby bylo jasné, které se změnilo a které ne.
Doplňující pokyny:
-
Spread vždy rozbalujeme do hranatých závorek
[...]. -
Původní pole zůstává beze změny, pokud používáš slice nebo kopii pomocí spreadu.
-
Dávej pozor na rozdíl mezi mělkou a hlubokou kopií – pro tuto úlohu pracujeme jen s jednoduchými řetězci, takže to nevadí.
Řešení úlohy
Co je zde splněno
-
Vytvořeno pole
frontendse 3 hodnotami. -
Pomocí spreadu vytvořena kopie + přidán jazyk „TypeScript“.
-
Spojeno pole
frontendabackenddofullstackpomocí spreadu. -
Pomocí
slice()a spreadu vytvořeno nové polemodernibez „HTML“ a s přidaným „React“. -
Vypsána všechna pole → je vidět, že
frontendzůstalo beze změny, měnila se jen nová pole.
Vylepšení oproti začátečnické verzi
-
Použití šablonových řetězců a
join(" | ")pro přehlednější výpis. -
Čistší kód, který zvýrazňuje rozdíly mezi poli.
-
Ukázka elegantního využití spreadu v různých kombinacích.