ES6: Map, WeakMap, Set y WeakSet

Seguimos viendo las novedades de ES6. En esta entrada, vamos a ver las nuevas estructuras de datos que presenta. Estas estrucutras de datos son el Map, WeakMap, Set y WeakSet.

Map

Map es una estructura de datos clave-valor. Pero lo interesante, es que tanto el valor como la clave pueden ser cualquier tipo de dato, es decir, pueden ser números enteros, objetos o cualquier otro tipo. Vamos a ver un código de ejemplo:

Ver código anterior en vivo: https://repl.it/@vreaxe/ES6-Map

 

WeakMap

WeakMap son estructuras de datos similares a Map, pero que simplemente permiten objetos como clave y la referencia hacia el objeto es una referencia débil, es decir, cuando no hay referencias al objeto fuera del WeakMap, el elemento es eliminado del WeakMap. Otra de las diferencias respecto a Map, es que no podemos acceder a los métodos .entries() , .keys() , .values() , .clear()  ni a la propiedad .size . Tampoco podemos recorrerlo con un bucle para ver los elementos que tiene, simplemente podemos acceder con .get() . Vamos a ver un ejemplo para entenderlo:

Ver código anterior en vivo: https://repl.it/@vreaxe/ES6-WeakMap

 

Set

Set es una estructura de datos que nos permite guardar valores de cualquier tipo, pero tienen que ser únicos. Vamos a ver un ejemplo:

Ver código anterior en vivo: https://repl.it/@vreaxe/ES6-Set

 

WeakSet

Con los WeakSet pasa lo mismo que con los WeakMap. En este caso, son similares a Set, pero simplemente permiten objetos como valor y la referencia al objeto también es débil. Tampoco podemos acceder a los métodos .entries() , .keys() , .values() , .clear()  ni a la propiedad .size . Ni tampoco podremos iterar sobre el WeakSet. Vamos a ver un ejemplo:

Ver código anterior en vivo: https://repl.it/@vreaxe/ES6-WeakSet

-


Aloja tu proyecto en DigitalOcean: Obtén $200 de crédito gratis al registrarte a través de este enlace.

Si hay cualquier tipo de error en el post o te surge cualquier duda, no dudes en ponerlo en los comentarios o enviarme un correo desde la página de contacto.

? CONTACTAR

Deja una respuesta

  Acepto la política de privacidad