Skip to content

Commit

Permalink
Vydělení samostatného kurzu JavaScript 2
Browse files Browse the repository at this point in the history
  • Loading branch information
podlomar committed Mar 13, 2024
1 parent 26c2577 commit 46b5a31
Show file tree
Hide file tree
Showing 21 changed files with 81 additions and 41 deletions.
2 changes: 1 addition & 1 deletion daweb/js1/entry.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ lessons:
- funkce-obory
- funkce-arg-udalosti
- udalosti-formulare
- stranky-chyby
- pole-data
- stranky-chyby
- filmbox
4 changes: 2 additions & 2 deletions daweb/js1/pole-data/cteni-na-doma.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
## Povinné čtení na doma

Pro průchod polem existují ještě dva mnohem obecnější postupy pomocí klíčových slov `while` a `for`, které však v praxi s Reactem nejsou tolik využívané a my se jim tedy v tomto kurzu věnujeme jen okrajově.
Pro průchod polem existují ještě dva mnohem obecnější postupy pomocí klíčových slov `while` a `for`, které však v tomto kurzu nebudeme tolik potřebovat a proto je zmíníme pouze okrajove. Pozor však na to, že v programátorské praxi se s nimi setkáte velmi často.

Na rozdíl od `map` a `forEach` nám umožňují provádět smyčky i bez podkladového pole. Využívají se především v případě, kdy potřebujeme provádět nějakou operaci několikrát, ale nevíme předem, kolikrát.
Na rozdíl od `map` a `forEach` nám `while` a `for` umožňují provádět cykly i bez podkladového pole. Využívají se především v případě, kdy potřebujeme provádět nějakou operaci několikrát, ale nevíme předem, kolikrát.

### Cyklus `while`

Expand Down
1 change: 0 additions & 1 deletion daweb/js1/pole-data/cv-foreach-map.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
## Cvičení: Metody `forEach` a `map`

::exc[cvlekce/pocitani-ovecek]
::exc[cvlekce/map-jednohubky]
::exc[cvlekce/nezaplacene-objednavky]
3 changes: 2 additions & 1 deletion daweb/js1/pole-data/cv-pole.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
## Cvičení: Práce s poli

::exc[cvlekce/pole-v-divadle]
::exc[cvlekce/sachovnice]
::exc[cvlekce/indexy]
::exc[cvlekce/pocitani-ovecek]
41 changes: 41 additions & 0 deletions daweb/js1/pole-data/cvlekce/indexy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
title: Práce s indexy
demand: 3
lead: Vyzkoušejte si jak přistupovat k prvkům v poli pomocí indexů.
solutionAccess: protected
---

Cvičení provádějte ve vašem JavaScript souboru.

1. Napište funkci `first`, která jako svůj parametr přijme pole a vrátí první prvek tohoto pole. Pokud pole bude prázdné, funkce vrátí `undefined`. Funkci otestujte s několika různými poli. Například:

```js
first([3, 2, 1]); // ⟶ 3
first([]); // ⟶ undefined
```
1. Napište funkci `last`, která jako svůj parametr přijme pole a vrátí poslední prvek tohoto pole. Pokud pole bude prázdné, funkce vrátí `undefined`. Funkci otestujte s několika různými poli. Například:

```js
last([3, 2, 1]); // ⟶ 1
last([]); // ⟶ undefined
```
1. Napište funkci `middle`, která jako svůj parametr přijme pole a vrátí prvek uprostřed tohoto pole. Pokud pole bude prázdné, funkce vrátí `undefined`. Pokud pole bude obsahovat sudý počet prvků, vrátí funkce prvek vlevo od středu. Funkci otestujte s několika různými poli. Například:

```js
middle([3, 2, 1]); // ⟶ 2
middle([3, 2, 1, 0]); // ⟶ 2
middle([]); // ⟶ undefined
```
1. Napište funkci `middleMean`, která jako svůj parametr přijme pole a vrátí prvek uprostřed tohoto pole. Pokud pole bude prázdné, funkce vrátí `undefined`. Pokud pole bude obsahovat sudý počet prvků, vrátí funkce průměr dvou prvků uprostřed. Funkci otestujte s několika různými poli. Například:

```js
middleMean([3, 2, 1]); // ⟶ 2
middleMean([3, 2, 1, 0]); // ⟶ 1.5
middleMean([]); // ⟶ undefined
```
1. Napište funkci `insert`, která jako první parametr přijme pole a jako druhý parametr nějakou hodnotu. Funkce zkontroluje, zda pole již obsahuje tuto hodnotu. Pokud ano, vrátí `false`. Pokud ne, vloží hodnotu na konec pole a vrátí `true`. Funkci otestujte s několika různými poli. Například:

```js
insert([3, 2, 1], 4); // ⟶ true
insert([3, 2, 1], 3); // ⟶ false
```
4 changes: 2 additions & 2 deletions daweb/js1/pole-data/entry.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ lead: Ukážeme si jako ukládat hodnoty do polí a také jak transformovat a ji
access: protected
sections:
- pole
- cv-pole
- pole-a-foreach
- cv-pole
- nodelist-a-foreach
- map
- cv-foreach-map
# - cteni-na-doma
- shrnuti
- ulozky-na-doma
- cteni-na-doma
# - volitelne-ulozky
2 changes: 0 additions & 2 deletions daweb/js1/pole-data/nodelist-a-foreach.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
## `querySelectorAll` a `forEach`

### document.querySelectorAll

Díky tomu, že už rozumíme polím a metodě `forEach`, si můžeme představit funkci `document.querySelectorAll`. Ta funguje podobně jako už známá funkce `document.querySelector`. Vrátí však **všechny** elementy, které najde pomocí zadaného selektoru. Výsledek obdržíme jako pole DOM elementů. To pak můžeme zpracovat pomocí metody `forEach`.

V lekci o událostech jsme si slíbili, že dokážeme zjednodušít kód naší aplikace se smajlíky. Připomeňme si HTML kód našich tlačítek.
Expand Down
2 changes: 1 addition & 1 deletion daweb/js1/pole-data/pole-a-foreach.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Pole a `forEach`

Metoda `forEach` je základní nástroj pro práci s poli v JavaScriptu. Pole jsou datové struktury, které nám umožňují ukládat více hodnot do jedné proměnné. Metoda `forEach` pak umožňuje procházet přes všechny prvky v poli a provádět na nich nějakou akci.
Metoda `forEach` je základní nástroj pro procházení poli prvek po prvku. Díky této metodě můžeme snadno provést nějakou akci pro každý prvek v poli.

Jednoduché použití metody `forEach` pro výpis všech prvků v poli do stránky může vypadat takto:

Expand Down
24 changes: 4 additions & 20 deletions daweb/js1/pole-data/pole.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Do této chvíle jsme uměli do nějaké proměnné uložit pouze jednu hodnotu, například řetězec, objekt, DOM element nebo funkci. Počítače ale často potřebují pracovat s mnohem větším objemem dat, než je několik čísel nebo řetězců. V této části si ukážeme jak ukládat větší množství hodnot do jedné proměnné.

## Pole

Do této chvíle jsme uměli do nějaké proměnné uložit pouze jednu hodnotu, například řetězec, objekt, DOM element nebo funkci. Počítače ale často potřebují pracovat s mnohem větším objemem dat, než je několik čísel nebo řetězců. V této části si ukážeme jak ukládat větší množství hodnot do jedné proměnné.

:term{cs="Pole" en="Array"} nám umožňují do jedné proměnné uložit více hodnot.
Tvoříme je pomocí hranatých závorek. Takto například do jedné proměnné uložíme různé druhy ovoce.

Expand All @@ -28,7 +28,7 @@ const students = [
];
```

Tato datová struktura v podstatě reprezentuje tabulku s řádky a sloupečky. V prvním sloupečku máme jména studentů, ve druhém jejich věk. Každý řádek tabulky je jeden objekt.
Tato datová struktura v podstatě reprezentuje tabulku s řádky a sloupečky. V prvním sloupečku máme jména studentů, ve druhém jejich věk. Každý řádek tabulky je pak jeden JavaScriptový objekt.

| Name | Age | Mark |
| ----- | --- | ---- |
Expand All @@ -42,7 +42,7 @@ Pozor na to, že podobně jako existuje prázný řetězec `''`, existuje také

### Indexy

Hodnoty uvnitř polí sídlí na takzvaných indexech. Na jednotlivé indexy přistupujeme také pomocí hranatých závorek. Jak už víme z lekce o řetězcích, **programátoři všechno počítají od nuly**.
Hodnoty uvnitř polí sídlí na takzvaných _indexech_. Na jednotlivé indexy přistupujeme také pomocí hranatých závorek. Jak už víme z lekce o řetězcích, **programátoři všechno počítají od nuly**.

```js
const fruits = ['jablko', 'hruška', 'banán', 'jahoda', 'malina'];
Expand Down Expand Up @@ -128,19 +128,3 @@ const messages = [
{ from: 'John', text: 'I am fine too.' },
];
```

Pomocí pole však také polí můžeme reprezentovat herní plány v různých počítačovách hrách. Takto například mohou vypadat rozehrané piškvorky 3x3.

```js
const tictactoe = [
['o', ' ', ' '],
[' ', 'x', ' '],
[' ', 'o', 'x'],
];
```

Vidíme, že na tahu je zrovna křížek. Můžeme tak snadno provést nějaký chytrý tah.

```js
tictactoe[0][2] = 'x';
```
4 changes: 1 addition & 3 deletions daweb/js1/pole-data/shrnuti.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,4 @@ Po této lekci byste měli vědět a znát

- co jsou to pole a jak je vytvářet, měnit a hledat v nich,
- metodu `forEach` na poli a na seznamu elementů (`NodeList`),
- metodu `map` na poli,
- jak z `NodeList` udělat pole,
<!-- - zápis cyklů pomocí `for` a `while`, -->
- jak používat metodu `map` na poli.
11 changes: 11 additions & 0 deletions js2/assets/javascript.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions js2/entry.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
title: JavaScript 2
lead: Dlouhodobý kurz JavaScript 2 pro vývoj webových aplikací
image: assets/javascript.svg
lessons:
- ../daweb/js2/opakovani
- ../daweb/zaklady-gitu/spoluprace
- ../daweb/js2/organizace-bundle
- ../daweb/js2/sablony-komponenty
- ../daweb/js2/server-komunikace
- ../daweb/js2/podminene-zobrazeni
- ../daweb/js2/seznamy
- ../daweb/js2/posilani-dat
- ../daweb/js2/api-parametry
- ../daweb/js2/crud
- ../daweb/js2/cafe-lora-1
- ../daweb/js2/cafe-lora-2
5 changes: 0 additions & 5 deletions js2/organizace-kodu/entry.yml

This file was deleted.

3 changes: 0 additions & 3 deletions js2/organizace-kodu/import-export.md

This file was deleted.

0 comments on commit 46b5a31

Please sign in to comment.