Array (česky pole) je více hodnot za sebou. Zapisuje se pomocí hranatých závorek [] a hodnoty jsou odděleny čárkou.
Příklad známek z předmětu Programování v JavaScriptu:
const grades = [1, 3, 2, 1, 5]; console.log(grades); // Výstup: [1, 3, 2, 1, 5] console.log("Celkový počet známek:", grades.length); // Výstup: Celkový počet známek: 5
Nebo už naprogramované projekty:
const completedProjects = ["Soundboard", "Reader bar", "Countdown timer"]; console.log(`Počet hotový projektů: ${completedProjects.length}`); // Výstup: Počet hotový projektů: 3 // Přidání nového projektu completedProjects.push("Spin the wheel"); console.log(`Počet hotový projektů: ${completedProjects.length}`); // Výstup: Počet hotový projektů: 4 console.log(completedProjects); // Výstup: ['Soundboard', 'Reader bar', 'Countdown timer', 'Spin the wheel']
V array můžou být jakékoli datové typy – čísla, stringy, objekty, datumy, další arraye… Vždycky se ale drž pravidla, že jeden array = jeden datový typ.
Nový prvek do pole vložíš přes .push()
Procházení array - indexování od nuly
První prvek v array má vždy index 0. Druhý prvek má index 1, atd…
const completedProjects = ["Soundboard", "Reader bar", "Countdown timer"]; console.log("První hotový projekt:"); console.log(completedProjects[0]); // Výstup: // První hotový projekt: // Soundboard console.log("Poslední hotový projekt:"); console.log(completedProjects[completedProjects.length - 1]); // Výstup: // Poslední hotový projekt: // Countdown timer
Pokud máš v poli 15 prvků, první je na indexu 0 a poslední na indexu 14 (délka pole - 1).
Když chceš projít všechny prvky v poli a vypsat je, použiješ .forEach().
const completedProjects = ["Soundboard", "Reader bar", "Countdown timer"]; completedProjects.forEach((project) => { console.log(`Název projektu: ${project}.`); }) // Výstup: // Název projektu: Soundboard. // Název projektu: Reader bar. // Název projektu: Countdown timer.
Vyzkoušej
- udělej si pole známek z libovolného předmětu (obyčejná čísla) a vypiš všechny známky
- před známky lepší než 3 dej ✅
- před známky horší než 3 den ❌
- před trojky dej ⚠
- udělej si pole s objekty - recenze restaurace
- každá recenze má jméno zákazníka, text recenze a počet hvězdiček (1-5)
- vypiš všechny recenze a počet hvězdiček vypiš pomocí emoji ⭐️
Metody na array
.find()
Najde a vrátí první první prvek v poli, který splňuje nějakou podmínku. Vždy vrací jenom jeden.
const products = [ { id: 1, name: "Yeezy" }, { id: 2, name: "Air Jordan" }, { id: 3, name: "Nike Dunk" }, { id: 4, name: "Adidas Samba" }, { id: 3, name: "Jiná bota co má stejný ID jako Nike Dunk" }, ]; const found = products.find((product) => product.id === 3); console.log(found); // Výstup: {id: 3, name: 'Nike Dunk'}
.includes()
Vrátí true/false, jestli se daný prvek nachází v poli.
const cities = ["Prague", "Berlin", "Tokyo", "Budapest"]; console.log(cities.includes("Munich")); // Výstup: false console.log(cities.includes("Tokyo")); // Výstup: true
Tady si dej pozor – na objekty to nebude fungovat.1
.map
Vrátí nový array, který obsahuje pozměněná (přemapovaná) data.
const plants = [ {id: 1, name: "Ficus Robusta", price: 199}, {id: 2, name: "Rhaphidophora tetrasperma", price: 479}, {id: 3, name: "Řasokoule", price: 79}, {id: 4, name: "Monstera Adansonii", price: 429}, ]; const outputArray = plants.map((plant) => { return `${plant.name} - ${plant.price} Kč`; }) // Z arraye uděláme string - všechny prvky spojíme pomocí \n (nový řádek) const outputText = outputArray.join("\n"); console.log("Nabídka našeho květinářství 🪴"); console.log(outputText); // Výstup: // Ficus Robusta - 199 Kč // Rhaphidophora tetrasperma - 479 Kč // Řasokoule - 79 Kč // Monstera Adansonii - 429 Kč
Nový array je vždycky stejně dlouhý jako ten původní.
.join()
Spojí všechny prvky do jednoho string a mezi jednotlivé prvky dá oddělovač.
const food = ["🌭", "🥖", "🍔", "🥓"]; // Jako oddělovač dáváme emoji console.log(food.join(" 😋 ")); // Výstup: 🌭 😋 🥖 😋 🍔 😋 🥓 // Jako oddělovač nedáváme nic console.log(food.join()); // Výstup: 🌭,🥖,🍔,🥓
.reverse() a .toReversed()
Obrátí celé pole - prvek na konci bude na začátku a prvek na začátku bude na konci.
const animals = ["Křeček 🐹", "Kočka 🐱", "Pes 🐶", "Velryba 🐳"]; console.log(animals); animals.reverse(); // Původní pole se změnilo console.log(animals);
Pozor, .reverse() změní pole in-place. To znamená, že tím šáhne na původní hodnotu a nevytváří nové pole.
Pokud chceš pracovat s novým polem a původní neměnit, použij .toReversed()
const animals = ["Křeček 🐹", "Kočka 🐱", "Pes 🐶", "Velryba 🐳"]; console.log(animals); const reversedAnimals = animals.toReversed(); console.log("Původní zvířata: ", animals); console.log("Obrácená zvířata: ", reversedAnimals);
.sort() a .toSorted()
Pomocí porovnávací funkce seřadí pole.2
Array.sort() a Array.toSorted()
Porovnávací funkce přijímá dva parametry - a a b a vrací hodnotu podle jejich pořadí.
| Podmínka | Návratová hodnota |
|---|---|
a je řazeno před b | -1 (nebo klidně jiné záporné číslo) |
a je řazeno za b | 1 (nebo klidně jiné kladné číslo) |
a je stejné jako b | 0 |
(a, b) => a - b seřadí čísla ve vzestupném pořadí. |
const countries = [ { name: "SK", population: 5_473_631 }, { name: "CZ", population: 10_604_294 }, { name: "HU", population: 9_584_627 }, ]; // Vzestupně const ascending = countries.toSorted((a, b) => { return a.population - b.population; }); console.log(ascending); // Sestupně const descending = countries.toSorted((a, b) => { return b.population - a.population; }); console.log(descending);
.sort() změní pole in-place (změní původní hodnotu). Když to nechceš, použij .toSorted().
.some()
Vrací true nebo false, pokud alespoň jeden prvek v poli splňuje podmínku.
const AMOUNT_THRESHOLD = 10_000; const transactions = [ { name: "McDonalds Praha 10", amount: 149 }, { name: "Albert Hradecká 13", amount: 49 }, { name: "Spotify", amount: 99 }, { name: "INVESTIČNÍ PLATFORMA GARANTOVANÉ ZISKY", amount: 150_000 }, ]; const shouldLockAccount = transactions.some((transaction) => { return transaction.amount > AMOUNT_THRESHOLD }); if (shouldLockAccount) { console.log("🚨 DETEKOVÁNY PODEZŘELÉ TRANSAKCE 🚨"); }
.filter()
Vyfiltruje prvky, který splňují podmínku. Vrací array.
const companies = [ { name: "Agrofert", field: "AGRICULTURE" }, { name: "Fortuna", field: "GAMBLING" }, { name: "Lidl", field: "GROCERIES" }, { name: "Pražská plynárenská", field: "UTILITIES" }, { name: "Sazka", field: "GAMBLING" }, ]; const gamblingCompanies = companies.filter((company) => company.field === "GAMBLING"); console.log(gamblingCompanies);
.pop()
Vrátí poslední prvek v poli a odebere ho. Použiješ to, když potřebuješ datovou strukturu zásobník.
const vegetables = ["Brokolice 🥦", "Paprika 🫑", "Okurka 🥒", "Rajče 🍅"]; const last = vegetables.pop(); console.log(last); console.log(vegetables);
.shift()
Footnotes
-
Objekty jsou pointery na paměť. Když míří jinam, tak je jedno, jestli je tam stejná hodnota. Když dostanu dvě adresy – jednu v Praze, druhou v Brně – tak je jedno, že tam bydlí stejný počet lidí. Je to jiná adresa, jiný místo. ↩
-
Nepotřebuješ znát žádný řadící algoritmy. Všechno je vyřešený za Tebe pod pokličkou. ↩