Como Iterar un objeto Set JavaScript
Un set es un grupo de valores únicos.
A diferencia de un Map, un Set es conceptualmente más parecido a un Array que a un Object, ya que es una lista de valores y no de pares clave-valor. Sin embargo, un Set no es un sustituto de los Array, sino un complemento que permite brindar respaldo adicional para trabajar con datos duplicados.
Como en el caso de los Map, los Set cuentan con un método forEach() incorporado. Debido a que los Set no tienen claves, el primer y segundo parámetro de la devolución de llamada forEach() muestran el mismo valor, por lo que no hay un caso de uso para este fuera de la compatibilidad con Map. Los parámetros de forEach() son (value, key, set).
Tanto forEach() como for...of pueden utilizarse en Set. Primero, veremos la iteración de forEach():
const set = new Set(['hi', 'hello', 'good day'])
// Iterando un objeto Set con forEach
set.forEach((value) => console.log(value))
Luego podemos escribir la versión de for...of:
// Iterar un objeto Set con for...of
for (const value of set) {
console.log(value);
}
// Output:
// hi
// hello
// good day
Ejemplos de iteraciones a un objeto Set:
// iterar sobre los elementos del conjunto
//registra los elementos en orden de inserción:1,"algún texto",{"a":1,"b":2},{"a":1,"b":2},5
for (const item of mySet1) {
console.log(item);
}
//registra los elementos en orden de inserción:1,"algún texto",{"a":1,"b":2},{"a":1,"b":2},5
for (const item of mySet1.keys()) {
console.log(item);
}
//registra los elementos en orden de inserción:1,"algún texto",{"a":1,"b":2},{"a":1,"b":2},5
for (const item of mySet1.values()) {
console.log(item);
}
//registra los elementos en orden de inserción:1,"algún texto",{"a":1,"b":2},{"a":1,"b":2},5
// (la clave y el valor son los mismos aquí)
for (const [key, value] of mySet1.entries()) {
console.log(key);
}
// convierte el objeto Set en un objeto Array, con Array.
const myArr = Array.from(mySet1) //[1,"algún texto",{"a":1,"b":2},{"a":1,"b":2},5]
// lo siguiente también funcionará si se ejecuta en un documento HTML
mySet1.add(document.body)
mySet1.has(document.querySelector('body')) // true
// convertir entre Set y Array
const mySet2 = new Set([1, 2, 3, 4]);
console.log(mySet2.size); // 4
console.log([...mySet2]); // [1, 2, 3, 4]
// la intersección se puede simular mediante
const intersection = new Set([...mySet1].filter((x) => mySet2.has(x)));
// la diferencia se puede simular mediante
const difference = new Set([...mySet1].filter((x) => !mySet2.has(x)));
// Iterar entradas de conjuntos con forEach ()
mySet2.forEach((value) => {
console.log(value);
});
// 1
// 2
// 3
// 4






