Objavljeno

Hash mape u JavaScript-u: Ključ-vrijednostni parovi visokih performansi

Autori

Zašto koristiti Map?

Pa, svi znamo da drugi programski jezici imaju nešto što se zove Hashtable. To je struktura podataka koja pohranjuje ključ-vrijednost parove koji su odlični zbog svog O(1) konstantnog vremenskog pretraživanja. To je korisna struktura podataka koju možemo koristiti za pohranu podataka. U JavaScriptu nemamo ugrađenu strukturu podataka kao što je Hashtable. Ali možemo koristiti objekt za pohranu ključ-vrijednost parova. U JavaScriptu se to naziva Map.

Šta je Map?

Map je kolekcija elemenata gdje se svaki element pohranjuje kao par Ključ, Vrijednost. Ključevi i vrijednosti Map-a mogu biti bilo koja vrijednost (i objekti i primitivne vrijednosti). Objekt Map iterira svoje elemente u redoslijedu umetanja - for...of petlja vraća niz [ključ, vrijednost] za svaku iteraciju.

Map sadrži ključ-vrijednost parove gdje ključevi mogu biti bilo kojeg tipa podataka. Map ima svojstvo koje predstavlja veličinu Map-a. Map pamti originalni redoslijed umetanja ključeva.

Metode i svojstva Map-a

MetodaOpis
new Map()Kreira novi objekt Map
set()Postavlja vrijednost za ključ u Map-u
get()Vraća vrijednost za ključ
has()Vraća boolean koji pokazuje da li ključ postoji u Map-u
delete()Uklanja ključ iz Map-a
clear()Uklanja sve ključeve iz Map-a
values()Vraća objekt iteratora vrijednosti u Map-u
keys()Vraća objekt iteratora ključeva u Map-u
entries()Vraća objekt iteratora ključ-vrijednost parova u Map-u
forEach()Izvršava zadanu funkciju jednom za svaki ključ-vrijednost par u Map-u
SvojstvoOpis
sizeVraća broj ključ/vrijednost parova u Map-u

Primjer Map-a

const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])

console.log(map.get('name')) // John
console.log(map.get('age')) // 30
console.log(map.get('isMarried')) // true
console.log(map.get('address')) // {city: 'New York', state: 'NY'}
console.log(map.get('hobbies')) // ['reading', 'writing', 'coding']

console.log(map.size) // 5

Iteracija Map-a

const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])

// Iteriranje ključeva
for (const key of map.keys()) {
  console.log(key)
}

// Iteriranje vrijednosti
for (const value of map.values()) {
  console.log(value)
}

// Iteriranje ključ-vrijednost parova
for (const [key, value] of map.entries()) {
  console.log(key, value)
}

// Iteriranje ključ-vrijednost parova
map.forEach((value, key) => {
  console.log(key, value)
})

Map vs. Objekt

MapObjekt
Map je kolekcija podataka sa ključevima, baš kao i Objekt. Ali glavna razlika je u tome što Map dozvoljava ključeve bilo kojeg tipa.Ključevi objekta moraju biti string ili simbol.
Map je iterabilan i lako se može iterirati.Objekt nije iterabilan i ne može se lako iterirati.
Map ima ugrađenu forEach metodu, tako da nema potrebe da se konvertuje u niz.Objekt nema ugrađenu forEach metodu.
Map ima svojstvo size, tako da možemo lako dobiti broj stavki.Objekt nema svojstvo size.
Map može koristiti objekte kao ključeve.Objekt ne može koristiti objekte kao ključeve.
Map je brži od Objekta uopšteno.Objekt je generalno sporiji od Map-a.

Zaključak

U ovom članku smo naučili o Map-u u JavaScriptu. Naučili smo o metodama i svojstvima Map-a. Takođe smo saznali o razlici između Map-a i Objekta. Nadam se da ste uživali u ovom članku. Ako imate bilo kakvih pitanja, ostavite komentar ispod. Hvala vam na čitanju.

Originalno objavljeno na: https://blog.imam.dev/blog/javascript-hashmap

Reference

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

https://www.freecodecamp.org/news/what-is-a-javascript-map-what-are-the-differences-between-map-and-object-in-javascript/

https://www.geeksforgeeks.org/map-vs-object-javascript/