<aside> 💡 Información explícita → Un Map solo conserva la información que almacenemos. En cambio, un Object viene con propiedades por defecto.

</aside>

<aside> 🔑 Claves avanzadas → En un Map podemos usar no primitivas como funciones u objetos como clave. Sin embargo, en un Object estamos restringidos a String y Symbol.

</aside>

<aside> 📑 Orden → ****Depende de cómo iteremos un objeto la información estará ordenada de forma distinta. En un Map la información siempre está en el mismo orden en que se insertó.

</aside>

<aside> 👉 Tamaño → Podemos saber el tamaño de un Map de forma instantánea leyendo la propiedad ‘size’. En un Object hay que calcularlo.

</aside>

<aside> ➿ IteraciónMap implementa el protocolo iterable. Podemos usar por tanto for..of y spread operator.

</aside>

<aside> ⏩ VelocidadInsertar/Borrar muchas propiedades es más rápido en un Map.

</aside>

const user = new Map();

user.set('name', 'Albert');
user.set('age', 47);

const functionKey = function () {};
user.set(functionKey, 'valor');

console.log(user.get('name')) // 'Albert'
console.log(user.get(functionKey)) // 'valor'

// iteración
for (const [clave, valor] of user) {
	console.log(clave, valor);
}

// tamaño
console.log(user.size) // 3

// Borrar propiedades
user.delete(functionKey);

Ejecuta el ejemplo: https://replit.com/@nidstang1/Map-vs-Object?v=1

<aside> ⚠️ Importante: Hay situaciones en los que queremos usar un objeto como un diccionario pero que no interesa representar la información con un Map. Por ejemplo, cuando queremos serializar un objeto de forma recurrente, Map no puede usarse directamente con un JSON.stringify, sin embargo un objeto si.

Más información: https://www.linkedin.com/feed/update/urn:li:activity:6972515445241184256?commentUrn=urn%3Ali%3Acomment%3A(activity%3A6972515445241184256%2C6972544042781798400)

</aside>