18 maj 2019

new Map jak i do czego używać.

Map jest prostym obiektem mapującym klucze na wartości - definicja.
Obiekt Map ma kilka właściwości:

Map.prototype​.clear()
Map.prototype​.delete()
Map.prototype​.entries()
Map.prototype​.for​Each()
Map.prototype​.get()
Map.prototype​.has()
Map.prototype​.keys()
Map.prototype​.set()
Map.prototype​.values()

Opiszę tylko kilka z tych właściwości.
Powiedzmy że mamy prosty obiekt i chciałbym sprawdzić ile jest elementów w obiekcie.
Poniżej ten obiekt.

const size = {
  desktop: 992,
  tablet: 768,
  phone: 576
}


Pobieramy ilość elementów.

const sizeMap = new Map(Object.entries(size));
console.log(sizeMap.size); // 3

Map.prototype​.get() - zwraca element mapy

const sizeMap = new Map(Object.entries(size));
console.log(sizeMap.get('phone')); // 576

Map.prototype​.has() - zwraca Boolean true/false

const sizeMap = new Map(Object.entries(size));
console.log(sizeMap.has('phone')); // true

Map.prototype.set() - dodaje lub zmienia element o podany kluczu i wartości w Mapie.

const sizeMap = new Map(Object.entries(size));
sizeMap.set('phone', 90000); 
// { 'desktop' => 992, 'tablet' => 768, 'phone' => 90000 }

Nic nie szkodzi na przeszkodzie aby łączyć

const sizeMap = new Map(Object.entries(size));

sizeMap.set('phone', 90000).
 .set('smallPhone', 320) 
// { 'desktop' => 992, 'tablet' => 768, 'phone' => 90000, 'smallPhone' => 3200 }

Ostatni przykład forEach

const sizeMap = new Map(Object.entries(size));

sizeMap.forEach((key, value) => {
  console.log(value, key) 
// desktop 992, tablet 768, phone 90000
})

To samo możemy zrobić z tablicą

new Map([['bar', 2], ['foo', {}], ['baz', undefined], ['test', null]])
.forEach((key, value) => {
  console.log(value, key) 
// bar 2, foo {}, baz undefined, test null
});