Devuelve un array que contiene todos los pares [key, value] de las propiedades enumerables en formato cadena de texto que le pertenecen a un objeto dado.
Devuelve un arreglo que contiene todos los valores correspondientes a las propiedades enumerables de tipo cadena de texto pertenecientes a un objeto dado.
El objeto Set le permite almacenar valores únicos de cualquier tipo, ya sea valores primitivos o referencias a objetos.
constmySet1=newSet()mySet1.add(1) // Set [ 1 ]mySet1.add(5) // Set [ 1, 5 ]mySet1.add(5) // Set [ 1, 5 ]mySet1.add('algún texto') // Set [ 1, 5, 'algún texto' ]consto= {a:1, b:2}mySet1.add(o)mySet1.add({a:1, b:2}) // o está haciendo referencia a un objeto diferente, // por lo que está bienmySet1.has(1) // truemySet1.has(3) // false, ya que 3 no se ha agregado al conjuntomySet1.has(5) // truemySet1.has(Math.sqrt(25)) // truemySet1.has('Algún Texto'.toLowerCase()) // truemySet1.has(o) // truemySet1.size // 5mySet1.delete(5) // elimina 5 del conjuntomySet1.has(5) // false, 5 ha sido eliminadomySet1.size // 4, ya que acabamos de eliminar un valorconsole.log(mySet1)// output: Set(4) { 1, 'algún texto', { a: 1, b: 2 }, { a: 1, b: 2 } }
Mapas
Un mapa (sustantivo) es una estructura de datos que asocia valores (las llaves) con otros valores. Por ejemplo, es posible que desees mapear nombres a edades. Es posible usar objetos para esto.
let edades = {
Boris: 39,
Liang: 22,
Júlia: 62
};
console.log(`Júlia tiene ${edades["Júlia"]}`);
// → Júlia tiene 62
console.log("Se conoce la edad de Jack?", "Jack" in edades);
// → Se conoce la edad de Jack? false
console.log("Se conoce la edad de toString?", "toString" in edades);
// → Se conoce la edad de toString? true
Como tal, usar objetos simples como mapas es peligroso. Hay varias formas posibles de evitar este problema.
JavaScript viene con una clase llamada Map que esta escrita para este propósito exacto. Esta almacena un mapeo y permite cualquier tipo de llaves.
let edades = new Map();
edades.set("Boris", 39);
edades.set("Liang", 22);
edades.set("Júlia", 62);
console.log(`Júlia tiene ${edades.get("Júlia")}`);
// → Júlia tiene 62
console.log("Se conoce la edad de Jack?", edades.has("Jack"));
// → Se conoce la edad de Jack? false
console.log(edades.has("toString"));
// → false
Los métodos set,get, y has son parte de la interfaz del objeto Map. Escribir una estructura de datos que pueda actualizarse rápidamente y buscar en un gran conjunto de valores no es fácil, pero no tenemos que preocuparnos acerca de eso. Alguien más lo hizo por nosotros, y podemos utilizar esta simple interfaz para usar su trabajo.
Si tienes un objeto simple que necesitas tratar como un mapa por alguna razón, es útil saber que Object.keys solo retorna las llaves propias del objeto, no las que estan en el prototipo. Como alternativa al operador in, puedes usar el métodohasOwnProperty, el cual ignora el prototipo del objeto.