Las claves de objetos simples deben ser cadenas, mientras que una Mappuede tener claves de cualquier tipo.
Pero tengo poco uso para esto en la práctica. En casi todos los casos, me encuentro usando cadenas como teclas de todos modos. Y presumiblemente new Map()es más lento que {}. Entonces, ¿hay alguna otra razón por la que podría ser mejor usar un objeto en Maplugar de un simple?
javascript
ecmascript
es6
callum
fuente
fuente

map.set('foo', 123)realizó más rápido queobj.foo = 123? Si es así, eso es muy sorprendenteRespuestas:
Hay algunas razones por las que prefiero usar
Maps sobre objetos simples ({}) para almacenar datos de tiempo de ejecución (cachés, etc.):.sizepropiedad me permite saber cuántas entradas existen en este Mapa;.clear(),.forEach(), etc;Todos los demás casos, como pasar argumentos de funciones, almacenar configuraciones, etc., se escriben utilizando objetos simples.
Además, recuerde: no intente optimizar su código demasiado pronto. No pierda su tiempo haciendo puntos de referencia de objetos simples frente a Maps a menos que su proyecto esté sufriendo problemas de rendimiento.
fuente
===:)Mapusa el algoritmo SameValueZero. developer.mozilla.org/en-US/docs/Web/JavaScript/…Maps usando esto o aquello?No estoy seguro de esto, pero creo que el rendimiento NO es una razón para usar Maps. Eche un vistazo a esta página actualizada de jsperf:
http://jsperf.com/es6-map-vs-object-properties/73
Parece que (cuando se trata de cadenas al menos) los objetos son mucho más rápidos que los mapas para la configuración básica y la obtención.
fuente
Las otras respuestas no mencionan una última diferencia entre objetos
Mapys:Cita de MDN , énfasis mío
Esta fue la razón principal por la que decidí usar
Mappor primera vez en un proyecto reciente. Tenía un objeto normal que necesitaba mostrar en un<table>, con cada propiedad yendo en una fila específica.Escribí una función para transformar un objeto en un
Maporden de teclas deseado:Luego, el mapa podría repetirse en el orden deseado:
Por supuesto, esto es un poco artificial porque uno podría mostrarse al iterar sobre el orden de las propiedades sin crear un
Mapen el proceso:Pero si tiene una variedad de tales objetos y los va a mostrar en muchos lugares, entonces convertirlos a mapas primero tiene sentido.
fuente