let items = ["chleb", "mleko", "jajka"];
console.log(items[0]);
Zapis listy jest w trzech językach taki sam: wartości w nawiasach kwadratowych, oddzielone przecinkiem. Numerowanie też: zaczyna się od zera, więc pierwsza wartość to items[0], a ostatnia z trzech to items[2].
php.net: Language Reference › Types › Arrays (sekcja „Accessing array elements with square bracket syntax”) · docs.python.org: tutorial 3.1.3 „Lists” · MDN: Learn_web_development/Core/Scripting/Arrays (sekcja „Accessing and modifying array items”)
Każdy z tych trzech programów wypisze najpierw 3, potem 4. Różni się sam zapis: PHP i Python liczą funkcją (count, len), a JavaScript czyta gotową wartość length, dlatego tam nie ma nawiasów. Nowa wartość zawsze ląduje na końcu.
php.net: Language Reference › Types › Arrays (sekcja „Creating/modifying with square bracket syntax”) · Function Reference › Array Functions › count · docs.python.org: tutorial 5.1 „More on Lists” (list.append) · MDN: Learn_web_development/Core/Scripting/Arrays (sekcje „Finding the length of an array”, „Adding items”)
Część 1 · Pętla po elementach
Weź po kolei każdą wartość
PHP
foreach ($items as $item) {
echo $item;
}
Python
for item in items:
print(item)
JavaScript
for (const item of items) {
console.log(item);
}
Ta pętla jest wygodniejsza od liczenia od zera do końca: nie podajemy żadnych numerów, a mimo to zmienna item dostaje po kolei każdą wartość z listy. Pętla kończy się sama, gdy wartości się skończą.
Pułapka w JavaScripcie: słowo of daje wartości, a słowo in daje numery. Zapis for (const item of items) wypisze "chleb", a for (const item in items) wypisze 0. W Pythonie słowo in od razu daje wartości.
php.net: Language Reference › Control Structures › foreach · docs.python.org: tutorial 4.2 „for Statements” · MDN: Learn_web_development/Core/Scripting/Arrays (sekcja „Accessing every item”) · Web/JavaScript/Reference/Statements/for...of
for key, value in product.items():
print(key, value)
JavaScript
const entries = Object.entries(product);
for (const [key, value] of entries) {
console.log(key, value);
}
Wszystkie trzy wypiszą to samo: name chleb, price 4.5, quantity 2. Pomysł jest wspólny: jeden obrót pętli daje parę, czyli klucz i wartość. Różni się tylko sposób, w jaki prosimy o tę parę.
php.net: Language Reference › Control Structures › foreach (forma as $key => $value) · docs.python.org: tutorial 5.6 „Looping Techniques” (dict.items) · MDN: Web/JavaScript/Reference/Global_Objects/Object/entries
products = [
{"name": "chleb", "price": 4.5},
{"name": "mleko", "price": 3.2},
{"name": "jajka", "price": 9.9},
]
total = 0
for product in products:
total = total + product["price"]
print(total)
JavaScript
const products = [
{ name: "chleb", price: 4.5 },
{ name: "mleko", price: 3.2 },
{ name: "jajka", price: 9.9 },
];
let total = 0;
for (const product of products) {
total = total + product.price;
}
console.log(total);
Wszystkie trzy wypisują 17.6. Wewnątrz są dwa klocki z tej lekcji: lista trzyma wiersze, a każdy wiersz to para klucz i wartość. Tak właśnie wygląda tabela, zanim trafi do bazy albo na stronę.
php.net: Language Reference › Types › Arrays (sekcja „Examples”) · docs.python.org: tutorial 5.1 „More on Lists” i 5.5 „Dictionaries” · MDN: Learn_web_development/Core/Scripting/Arrays (sekcja „Printing those products”)
Po prawej masz program w Pythonie: liczy sumę cen i szuka najdroższego produktu. Wypisuje sumę 18 oraz nazwę jajka. Przepisz go linijka po linijce, nazw nie zmieniaj.
Przepisz ten program na JavaScript.
Dla chętnych: przepisz ten sam program na PHP.
Dla chętnych: dołóż czwarty produkt droższy od jajek. Co wypisze program?
Program w Pythonie
products = [
{"name": "chleb", "price": 5},
{"name": "mleko", "price": 3},
{"name": "jajka", "price": 10},
]
total = 0
best = products[0]
for product in products:
total = total + product["price"]
if product["price"] > best["price"]:
best = product
print("Razem:", total)
print("Najdroższy:", best["name"])
Sprawdzenie
Trzy pytania na koniec
Od jakiej liczby zaczyna się numerowanie wartości w liście?
Czym para klucz i wartość różni się od zwykłej listy?
Jak dopisujemy wartość na koniec listy w każdym z trzech języków?
Podsumowanie
A jak to wygląda w produkcji?
Na lekcji
W produkcji
Status
lista wartości
Koszyk w sklepie, wyniki wyszukiwania, kolejka zadań do wykonania
codziennie
para klucz i wartość
Jeden wiersz z bazy danych, ustawienia programu, dane wysłane z formularza
codziennie
lista słowników
Odpowiedź serwera: lista rekordów, z których strona buduje tabelę
codziennie
suma w pętli
Podsumowanie zamówienia, raport sprzedaży, statystyki na panelu
codziennie
Ciekawostka: format JSON, którym programy wymieniają dziś dane przez internet, zbudowany jest dokładnie z tych dwóch klocków: listy i pary klucz z wartością. Zapis wzięto ze składni obiektu JavaScriptu, ale czytają go wszystkie języki.