Maps and Sets are new Collections in JavaScript that extend its capabilities beyond just Objects and Arrays.
Maps are kind of like objects, but allow you to use *any* object as a key, not just strings:
xxxxxxxxxx
var map = new Map();
var key = { name: "Object Key" };
var value = { name: "Object Value" };
// This wouldn't be possible using just an object.
map.set(key, value);
map.get(key);
xxxxxxxxxx
With a Map, you'll also never accidentally overwrite a property with a storage key:
xxxxxxxxxx
map.set("size", "value");
console.log(map.get("size") + " vs. " + map.size);
xxxxxxxxxx
Sets are more like arrays, but only have unique values in them:
xxxxxxxxxx
var array = [1,3,5,1,5,5,3];
var uniqueValues = new Set();
array.forEach(value => uniqueValues.add(value));
uniqueValues.forEach((value) => console.log(value));
xxxxxxxxxx
WeakMaps and WeakSets provide "leak-free" versions of these, by not storing references to the keys. You can read more about Maps, Sets, and their weak counterparts here: https://hacks.mozilla.org/2015/06/es6-in-depth-collections/
sign in to comment