vadnica-logo
Editor Moj Blog Moje storitve O projektu Telegram O meni O meni

JavaScript Tabele (Arrays)

Tabele (Arrays) so ena najpomembnejših podatkovnih struktur v JavaScriptu. Omogočajo shranjevanje več vrednosti v eno samo spremenljivko, kar naredi delo z velikimi količinami podatkov preprosto in učinkovito. Tabele so dinamične, kar pomeni, da jim lahko kadarkoli dodajamo ali odstranjujemo elemente, pri tem pa JavaScript avtomatsko upravlja njihovo velikost. S tabelami lahko shranjujemo različne tipe podatkov - od številk, nizov, objektov do drugih tabel. Vsak element v tabeli ima svoj edinstveni indeks, ki se začne z 0, kar omogoča hiter in enostaven dostop do posameznih vrednosti.

PRIMER
REZULTAT

Ustvarjanje tabele

Tabela (Array) je posebna spremenljivka, ki lahko vsebuje več kot eno vrednost. Če imamo seznam elementov (npr. seznam sadja), bi shranjevanje vsakega sadja v ločeno spremenljivko izgledalo takole:

let sadez1 = "Jagode";
let sadez2 = "Breskve";
let sadez3 = "Borovnice";

Kaj pa, če želimo prebrskati sadje in poiskati točno določenega? In recimo, da ne gre le za tri sadeže, temveč za 300. Rešitev je tabela (Array). Tabela omogoča shranjevanje velikega števila vrednosti pod enim imenom, do katerega dostopamo prek indeksnega števila. Spodaj je prikazan primer, kako bi zgornje spremenljivke zapisali kot tabela:

const tabela = ["Jagode", "Breskve", "Borovnice"];

Prvi indeks je vedno 0.

Običajna praksa je, da tabele deklariramo s ključnimi besedami const. Presledki in prelomi vrstic niso pomembni, zato lahko pišemo tudi takole:

const tabela = [
    "Jagode",
    "Breskve",
    "Borovnice"
];

Lahko najprej ustvarimo prazno tabelo, nato pa vanjo po vrsti dodamo elemente. Primer:

const tabela = [];
tabela[0] = "Jagode";
tabela[1] = "Breskve";
tabela[2] = "Borovnice";

Naslednji primer bomo naredili z uporaba ključne besede new in ji dodelili vrednost.

const tabela = new Array("Jagode", "Breskve", "Borovnice");

Vsi zgornji načini delujejo enako, vendar uporaba konstruktorja new Array ni nujna. Za preprostost, berljivost in hitrejše izvajanje priporočamo uporabo literalov tabel, kot je prikazano v prvem primeru.

tabela[0] = Date.now;
tabela[1] = Function;
tabela[2] = sadje;

JavaScript spremenljivke so lahko objekti, medtem ko so tabele (array) posebna vrsta objektov. Zato lahko v isti tabeli hranimo spremenljivke različnih tipov. V tabeli (array) lahko shranjujemo objekte, funkcije ali druge tabele (array). Resnična moč tabele (array) so vgrajene lastnosti in metode.

sadje.length // vrne število elementov
sadje.sort() // razvrščanje

Ustvarjanje in osnovne lastnosti tabel

Tabele (Arrays) so ena najpomembnejših podatkovnih struktur v JavaScriptu. Omogočajo shranjevanje več vrednosti v eno samo spremenljivko, kar naredi delo z velikimi količinami podatkov preprosto in učinkovito. Tabele so dinamične, kar pomeni, da jim lahko kadarkoli dodajamo ali odstranjujemo elemente, pri tem pa JavaScript avtomatsko upravlja njihovo velikost. Vsak element v tabeli ima svoj edinstveni indeks, ki se začne z 0, kar omogoča hiter in enostaven dostop do posameznih vrednosti.

Metode za delo s tabelami

Za delo s tabelami so na voljo številne metode, razdeljene v kategorije: mutacijske (spremenijo originalno tabelo, npr. push, pop, splice, sort) in nemutacijske (vrnejo novo tabelo, npr. slice, map, filter). Iskanje elementov poteka z indexOf, includes, find in findIndex.

Popoln pregled metod in lastnosti tabel (Cheat Sheet)

Spodnja tabela prikazuje vse glavne metode in lastnosti objektov Array v JavaScriptu, razvrščene po kategorijah (ustvarjanje, dostop, iskanje, spreminjanje, transformacija, pretvorbe). Za vsako metodo so navedeni opis delovanja, sintaksa in konkreten primer kode.

Ime Opis Sintaksa Primer
new Array() Konstruktor za ustvarjanje nove tabele. new Array(element1, element2, ...) let arr = new Array(1, 2, 3);
[] (Literal) Najhitrejši način za ustvarjanje tabele (priporočeno). [element1, element2, ...] let arr = [1, 2, 3];
constructor Vrne funkcijo, ki je ustvarila prototip objekta Array. array.constructor arr.constructor; // function Array() { ... }
prototype Omogoča dodajanje lastnosti in metod objektu Array. Array.prototype Array.prototype.novaMetoda = function() { ... };
isArray() Preveri, ali je objekt tabela (Array). Array.isArray(objekt) Array.isArray([1, 2]); // true
length Nastavi ali vrne število elementov v tabeli. array.length let dolzina = arr.length;
[indeks] Dostop do elementa po indeksu (začetek pri 0). array[indeks] let prvi = arr[0];
at() Vrne element na določenem indeksu (podpira negativne indekse). array.at(indeks) arr.at(-1); // Zadnji element
with() Vrne novo tabelo s posodobljenim elementom na določenem indeksu (immutable). array.with(indeks, novaVrednost) arr.with(0, "nov"); // Novo tabelo, ne spremeni originala
indexOf() Vrne indeks prvega pojavljanja elementa (-1, če ne najde). array.indexOf(element, začetniIndeks) arr.indexOf(2); // 1
lastIndexOf() Vrne indeks zadnjega pojavljanja elementa. array.lastIndexOf(element) arr.lastIndexOf(2); // 1
includes() Vrne true, če tabela vsebuje element. array.includes(element) arr.includes(2); // true
find() Vrne prvi element, ki ustreza pogoju. array.find(pogoj) arr.find(x => x > 5); // Prvo število večje od 5
findIndex() Vrne indeks prvega elementa, ki ustreza pogoju. array.findIndex(pogoj) arr.findIndex(x => x > 5); // 3
filter() Vrne novo tabelo z elementi, ki ustrezajo pogoju. array.filter(pogoj) arr.filter(x => x > 5); // [6, 7, 8]
push() Doda element(e) na konec tabele. Vrne novo dolžino. array.push(element1, ...) arr.push(4); // arr = [1, 2, 3, 4]
pop() Odstrani zadnji element in ga vrne. array.pop() let zadnji = arr.pop(); // arr = [1, 2]
unshift() Doda element(e) na začetek tabele. Vrne novo dolžino. array.unshift(element1, ...) arr.unshift(0); // arr = [0, 1, 2]
shift() Odstrani prvi element in ga vrne. array.shift() let prvi = arr.shift(); // arr = [2, 3]
splice() Doda ali odstrani elemente na poljubnem mestu. array.splice(zacetek, stRemove, element1, ...) arr.splice(1, 1, "nov"); // Odstrani 1 element na indeksu 1 in doda "nov"
sort() Razvrsti elemente v tabeli (privzeto po abecedi/ASCII). array.sort(funkcija) arr.sort((a, b) => a - b); // Numerično urejanje
reverse() Obrne vrstni red elementov v tabeli. array.reverse() arr.reverse(); // [3, 2, 1]
map() Vrne novo tabelo z rezultati klicanja funkcije na vsakem elementu. array.map(funkcija) arr.map(x => x * 2); // [2, 4, 6]
forEach() Izvede funkcijo na vsakem elementu (ne vrne ničesar). array.forEach(funkcija) arr.forEach(x => console.log(x));
reduce() Zmanjša tabelo na eno vrednost (akumulator). array.reduce(funkcija, začetnaVrednost) arr.reduce((acc, x) => acc + x, 0); // Vsota
reduceRight() Zmanjša tabelo na eno vrednost (od desne proti levi). array.reduceRight(funkcija, začetnaVrednost) arr.reduceRight((acc, x) => acc + x, 0);
some() Vrne true, če vsaj en element ustreza pogoju. array.some(pogoj) arr.some(x => x > 5); // true
every() Vrne true, če vsi elementi ustrezajo pogoju. array.every(pogoj) arr.every(x => x > 0); // true
join() Poveže vse elemente v niz z določenim ločilom. array.join(ločilo) arr.join(", "); // "1, 2, 3"
slice() Izreže del tabele in vrne novo tabelo (ne spreminja originala). array.slice(zacetek, konec) arr.slice(1, 3); // [2, 3]
concat() Poveže dve ali več tabel v novo tabelo. array.concat(tabela2, ...) arr.concat([4, 5]); // [1, 2, 3, 4, 5]
toString() Pretvori tabelo v niz (enako kot join(",")). array.toString() arr.toString(); // "1,2,3"
valueOf() Vrne osnovno vrednost tabele (sam tabelo). array.valueOf() arr.valueOf(); // [1, 2, 3]
entries() Vrne iteracijski objekt s pari [indeks, vrednost]. array.entries() ...arr.entries(); // [[0, 1], [1, 2], ...]
keys() Vrne iteracijski objekt s ključi (indeksi) tabele. array.keys() ...arr.keys(); // [0, 1, 2]
values() Vrne iteracijski objekt z vrednostmi tabele. array.values() ...arr.values(); // [1, 2, 3]