Deo zbornika Napredni Javaskript
Mapa u Javascriptu
Mapa (Map) je kolekcija koja omogućuje brz pristup vrednostima. Mapa omogućava da se proizvoljne vrednosti koriste kao ključevi, i zadržava redosled kojim su elementi dodati.
Primer
Novu mapu kreiramo pomoću konstruktora. Pomoću metoda set()
unosimo ključ i vrednost. Metod get()
vraća vrednost na osnovu ključa, ili undefined
ako unos ne postoji.
const mapa = new Map()
mapa.set('beograd', 11000)
console.log(mapa.get('beograd'))
Drugi pomoćni metodi koji mogu da se koriste u mapama su sledeći:
const mapa = new Map()
mapa.set('beograd', 11000)
mapa.set('resnik', 11231)
console.log(mapa.size)
mapa.delete('beograd')
console.log(mapa.has('beograd'))
Popunjavanje
Možemo da inicijalizujemo sa nizom nizova u formatu [kljuc, vrednost]
:
const mapa = new Map([
['beograd', 11000],
['rakovica', 11090],
['resnik', 11231]
])
Možemo i da ulančimo metod set()
, radi kompaktnije sintakse:
const mapa = new Map().set(11000, 'beograd').set(11090, 'rakovica').set(11231, 'resnik')
U mapi možemo da koristimo bilo koju vrednost kao ključ, uključujući i objekat.
Iteracija
Mapu ne možemo direktno iterirati, ali postoje tri metoda (keys()
, values()
i entries()
) kojima od mape pravimo iterator, koji potom možemo iterirati petljom for of
.
Metod keys()
Metod keys()
pravi iterablu od ključeva mape na sledeći način:
const mapa = new Map([
['beograd', 11000],
['rakovica', 11090],
['resnik', 11231]
])
for (const kljuc of mapa.keys()) {
console.log(kljuc)
}
Metod values()
Slično, metod values()
pravi iterablu od vrednosti mape:
const mapa = new Map([
['beograd', 11000],
['rakovica', 11090],
['resnik', 11231]
])
for (const vrednost of mapa.values()) {
console.log(vrednost)
}
Metod entries()
Metod entries()
pravi iterator od unosa mape u vidu [kljuc, vrednost]
parova:
const mapa = new Map([
['beograd', 11000],
['rakovica', 11090],
['resnik', 11231]
])
for (const unos of mapa.entries()) {
console.log(unos[0], unos[1])
}
Kod može biti još kraći ako upotrebimo destrukturiranje:
const mapa = new Map([
['beograd', 11000],
['rakovica', 11090],
['resnik', 11231]
])
for (const [kljuc, vrednost] of mapa){
console.log(kljuc, vrednost)
}
Konvertovanje mape u niz
Operator proširivanja (...
) može biti koristan da konvertujemo ključeve mape u niz:
const mapa = new Map([
['beograd', 11000],
['rakovica', 11090],
['resnik', 11231]
])
const kljucevi = [...mapa.keys()]
console.log(kljucevi)
Pošto su mape iterabilne, možemo konvertovati celu mapu u niz pomoću operatora proširivanja:
const mapa = new Map([
['beograd', 11000],
['rakovica', 11090],
['resnik', 11231]
])
const niz = [...mapa]
console.log(niz)
Literatura
- Ved Antani, Stojan Stefanov, Objektno-orjentisan JavaScript, Beograd, 2017.