Разумевање скупова у ЈаваСцрипт-у

Setovi predstavljaju novu funkcionalnost u JavaScript-u, uvedenu sa ES6 standardom. Hajde da detaljnije istražimo njihovu svrhu i upotrebu.

Šta su zapravo setovi?

Kako se koriste unutar JavaScript okruženja?

Koje metode su dostupne za rešavanje konkretnih programerskih izazova?

U ovom vodiču ćemo pokušati da damo odgovore na sva ova pitanja.

Setovi u JavaScript-u

Kao što sam naziv implicira, set je kolekcija koja čuva isključivo jedinstvene elemente. Dakle, duplirani podaci se ne mogu čuvati unutar seta.

U JavaScript-u, setovi elemente skladište po redosledu njihovog unosa. To znači da su setovi u JavaScript-u uređene kolekcije, sposobne za čuvanje i primitivnih tipova podataka i kompleksnih objekata.

Pogledajmo sintaksu pomoću koje kreiramo setove u JavaScript-u.

Preporučuje se da koristite odgovarajući IDE (Integrated Development Environment) kako biste isprobali primere koji slede.

    const imena = new Set(["Jovan", "Marko", "Petar", "Luka", "Marko"]);
    console.log(imena);

    const nasumicnaRec = new Set("Pooooozdrav");
    console.log(nasumicnaRec);

    const brojevi = new Set([5, 5, 5, 2, 1, 1, 2, 3]);
    console.log(brojevi);
  

Osobine i metode setova

Setovi poseduju različite osobine (properties) i metode koje nam olakšavaju manipulaciju i rešavanje problema. Njihova primena je prilično jednostavna, a imena metoda su intuitivna i olakšavaju razumevanje njihove funkcije. Pogledajmo ih detaljnije, jednu po jednu.

veličina (size)

Osobina „size“ vraća broj elemenata koji se trenutno nalaze u setu.

    const imena = new Set(["Jovan", "Marko", "Petar", "Luka", "Marko"]);
    console.log(`Veličina: ${imena.size}`);
  

dodaj (add)

Metoda „add“ se koristi za dodavanje novog elementa u set. Ako element koji pokušavamo da dodamo već postoji u setu, on neće biti ponovo dodat.

    // Prazan set
    const imena = new Set();

    imena.add("Jovan");
    imena.add("Marko");
    imena.add("Petar");
    imena.add("Luka");
    imena.add("Marko");

    console.log(imena);
  

ima (has)

Metoda „has“ prima jedan argument i vraća „true“ ako se taj element nalazi u setu, u suprotnom vraća „false“.

    const imena = new Set(["Jovan", "Marko", "Petar", "Luka", "Marko"]);

    console.log(imena.has("Marko"));
    console.log(imena.has("Ana"));
  

izbriši (delete)

Kao što se i očekuje, metoda „delete“ prima argument i uklanja ga iz seta. Neće generisati grešku čak i ako dati argument ne postoji unutar seta.

    const imena = new Set(["Jovan", "Marko", "Petar", "Luka", "Marko"]);

    imena.delete("Jovan");

    console.log(imena);
  

unosi (entries)

Metoda „entries“ vraća iterator koji sadrži nizove parova ključ/vrednost, poređane po redosledu unosa. U ovom slučaju, ključ i vrednost su uvek isti.

    const imena = new Set(["Jovan", "Marko", "Petar", "Luka", "Marko"]);

    const unosi = imena.entries();

    console.log(unosi.next().value);
    console.log(unosi.next().value);
    console.log(unosi.next().value);
    console.log(unosi.next().value);
    console.log(unosi.next().value);
  

ključevi (keys)

Metoda „keys“ vraća iterator elemenata seta, poređanih po redosledu unosa.

    const imena = new Set(["Jovan", "Marko", "Petar", "Luka", "Marko"]);

    const kljucevi = imena.keys();

    console.log(kljucevi.next().value);
    console.log(kljucevi.next().value);
    console.log(kljucevi.next().value);
    console.log(kljucevi.next().value);
    console.log(kljucevi.next().value);
  

vrednosti (values)

Metoda „values“ vraća iterator elemenata seta, poređanih po redosledu unosa, slično metodi „keys“.

    const imena = new Set(["Jovan", "Marko", "Petar", "Luka", "Marko"]);

    const vrednosti = imena.values();

    console.log(vrednosti.next().value);
    console.log(vrednosti.next().value);
    console.log(vrednosti.next().value);
    console.log(vrednosti.next().value);
    console.log(vrednosti.next().value);
  

očisti (clear)

Metoda „clear“ uklanja sve elemente iz seta.

    const imena = new Set(["Jovan", "Marko", "Petar", "Luka", "Marko"]);

    imena.clear();

    console.log(imena);
  

za svaki (forEach)

Metoda „forEach“ se koristi za iteriranje kroz set i dobijanje svakog elementa ponaosob.

    const imena = new Set(["Jovan", "Marko", "Petar", "Luka", "Marko"]);

    imena.forEach((element) => {
      console.log(element);
    });
  

Dodatno

Razmotrimo jednostavnu praktičnu primenu setova kroz primer. Zadatak je da iz datog niza uklonimo sve duplikate vrednosti. Jedinstvenost setova je idealna za rešenje ovog problema.

Procedura rešavanja:

  • Inicijalizujte niz sa test podacima.
  • Inicijalizujte prazan set.
  • Iterirajte kroz niz elemenata.
    • Dodajte svaki element u set.
    • Automatski će biti uklonjeni svi duplikati.
  • Inicijalizujte prazan niz.
  • Iterirajte kroz set i dodajte svaki element u novi niz.
  • Ispišite novi niz.

Preporučuje se da pokušate sami da rešite zadatak. Ako vam je potrebna pomoć, pogledajte ponuđeno rešenje ispod.

    const niz = ["Jovan", "Marko", "Petar", "Luka", "Marko"];

    const privremeniSet = new Set();

    niz.forEach((element) => {
      privremeniSet.add(element);
    });

    const noviNiz = [];

    privremeniSet.forEach((element) => {
      noviNiz.push(element);
    });

    console.log(noviNiz);
  

Zaključak

Sada posedujete potrebno znanje za rad sa setovima u JavaScript-u. Slobodno ih koristite u sledećim projektima. U potpunosti iskoristite sve njihove mogućnosti.

Srećno sa kodiranjem! 👨‍💻