Pole v JavaScriptu

SnoopySnoopy

Pole (anglicky "array") je datová struktura, které umožňují ukládat více hodnot v jedné proměnné. Pole jsou velmi užitečné při práci s kolekcemi dat a jsou podporovány většinou moderních programovacích jazyků.

Pole je v JS implementováno jako objekt. To si můžete snadno ověřit v konzoli zadáním příkazu:

typeof [] === 'object'

Oproti nově vytvořenému objektu má pole navíc metody (pole.length, pole.push, array.pop, …) protože dědí z Array prototype.

Vytvoření nového pole

Nejsnažším způsobem, jakým můžeme vytvářet pole je pomocí hranatých závorek "[]". Například:

const pole = [];

funkce konstruktoru JavaScriptu

Dalším způsobem je, jako u mnoha objektů, můžeme u pole použít konstruktor Array a pomocí i klíčové slovo new vytvořit novou instanci. Použití konstruktoru může být méně efektivní než použití literální syntaxe [].

var pole = new Array();

Pole s jednotlivými hodnotami jsou oddělené čárkou:

let numbers = [1, 2, 3, 4, 5];
let names = ["Alice", "Bob", "Charlie", "Dave"];

Pole mohou obsahovat hodnoty různého datového typu, ale obvykle se ukládají hodnoty stejného typu. Například pole s čísly nebo pole se řetězci.

Přístup k prvkům pole

Pole v JavaScriptu se indexuje od 0.

Běžně přistupujeme k jednotlivým prvkům pole pomocí jejich indexu přes hranaté závorky []. Závorky používáme také u objektů, kde k hodnotě nelze přistoupit přes tečku. Přes tu přistupujeme ve většině připadu, když pojmenujeme členskou proměnnou objektu validním jménem pro proměnnou, například čislo.

První prvek pole "numbers" můžeme získat pomocí numbers[0].

Můžeme, ale jednotlivé prvky pole získat přes destructuring.

Chcete-li změnit hodnotu položky pole:

names[2] = "Angie";

Používáme notaci hranatých závorek k nastavení nové hodnoty pro třetí položku v poli, která se změnila z „Charlie“ na „Angie“.

Přidání prvků

Můžeme také přidávat nové prvky do pole pomocí metody "push()" nebo měnit hodnoty již existujících prvků pomocí přiřazení nové hodnoty.

numbers.push(6);
numbers[2] = 7;

Délka pole

Metoda "length" nám umožní získat délku pole

console.log(numbers.length); // 5

Zajímavé je, že můžete také předefinovat velikost pole:

numbers.length = 3;
console.log(numbers); // [1, 2, 3]

Jak je ukázáno výše, nastavení délky na „3“ vedlo k odstranění posledních dvou položek.

Naopak položky můžete přidávat pomocí vlastnosti length:

numbers.length = 7;
console.log(numbers);
console.log(numbers); // [1, 2, 3,  undefined × 5]

To je sice možné, ale má to omezenou použitelnost, protože dvě nové hodnoty jsou "undefined", i když délka je nyní 7 místo 5.