Skip to content

Commit 6951a63

Browse files
committed
#18 - javascript
1 parent bcb08e7 commit 6951a63

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
// TEORÍA: Conjuntos (Sets) en JavaScript
2+
/*
3+
* Un Set en JavaScript es una estructura de datos que permite almacenar valores únicos
4+
* de cualquier tipo. A diferencia de los arrays:
5+
* - Los elementos en un Set son únicos
6+
* - No hay índices numéricos para acceder a los elementos
7+
* - El orden de los elementos se mantiene según el orden de inserción
8+
*
9+
* Los Sets son útiles cuando necesitamos asegurarnos de que no hay duplicados
10+
* y cuando el orden de los elementos no es crucial.
11+
*/
12+
13+
// Función principal que demuestra todas las operaciones
14+
function demostracionSets() {
15+
console.log("PARTE 1: OPERACIONES BÁSICAS CON SETS");
16+
17+
// Creación de un Set
18+
let conjunto = new Set();
19+
console.log("Conjunto inicial:", conjunto);
20+
21+
// 1. Añadir un elemento al final
22+
conjunto.add("Elemento1");
23+
console.log("Después de añadir un elemento:", conjunto);
24+
25+
// 2. Añadir un elemento al "principio"
26+
// NOTA: En realidad, en un Set no hay concepto de principio o final
27+
conjunto.add("Elemento2");
28+
console.log("Después de añadir otro elemento:", conjunto);
29+
30+
// 3. Añadir varios elementos en bloque
31+
const nuevosElementos = ["Elemento3", "Elemento4", "Elemento5"];
32+
nuevosElementos.forEach(elemento => conjunto.add(elemento));
33+
console.log("Después de añadir varios elementos:", conjunto);
34+
35+
// 4. Añadir elementos en una posición concreta
36+
// NOTA: Los Sets no permiten insertar en posiciones específicas
37+
// Podemos convertir a array, modificar y volver a Set
38+
let arrayTemporal = Array.from(conjunto);
39+
arrayTemporal.splice(2, 0, "ElementoA", "ElementoB");
40+
conjunto = new Set(arrayTemporal);
41+
console.log("Después de 'insertar' en posición específica:", conjunto);
42+
43+
// 5. Eliminar un elemento
44+
conjunto.delete("Elemento3");
45+
console.log("Después de eliminar 'Elemento3':", conjunto);
46+
47+
// 6. Actualizar un elemento
48+
// NOTA: No se pueden actualizar elementos directamente
49+
// Hay que eliminar el viejo y añadir el nuevo
50+
if (conjunto.delete("Elemento4")) {
51+
conjunto.add("Elemento4Actualizado");
52+
}
53+
console.log("Después de actualizar 'Elemento4':", conjunto);
54+
55+
// 7. Comprobar si un elemento está en el conjunto
56+
const contiene = conjunto.has("Elemento1");
57+
console.log("¿Contiene 'Elemento1'?", contiene);
58+
59+
// 8. Eliminar todo el contenido
60+
conjunto.clear();
61+
console.log("Después de limpiar el conjunto:", conjunto);
62+
63+
console.log("\nPARTE 2: OPERACIONES EXTRA CON SETS");
64+
65+
// Creamos dos conjuntos para las operaciones
66+
const conjunto1 = new Set([1, 2, 3, 4, 5]);
67+
const conjunto2 = new Set([4, 5, 6, 7, 8]);
68+
69+
// 1. Unión
70+
const union = new Set([...conjunto1, ...conjunto2]);
71+
console.log("Unión:", union);
72+
73+
// 2. Intersección
74+
const interseccion = new Set(
75+
[...conjunto1].filter(x => conjunto2.has(x))
76+
);
77+
console.log("Intersección:", interseccion);
78+
79+
// 3. Diferencia
80+
const diferencia = new Set(
81+
[...conjunto1].filter(x => !conjunto2.has(x))
82+
);
83+
console.log("Diferencia (conjunto1 - conjunto2):", diferencia);
84+
85+
// 4. Diferencia simétrica
86+
const diferenciaSimetrica = new Set(
87+
[...conjunto1].filter(x => !conjunto2.has(x))
88+
.concat([...conjunto2].filter(x => !conjunto1.has(x)))
89+
);
90+
console.log("Diferencia simétrica:", diferenciaSimetrica);
91+
}
92+
93+
// Funciones auxiliares útiles para trabajar con Sets
94+
const utilidadesSets = {
95+
// Unión de dos sets
96+
union: (setA, setB) => new Set([...setA, ...setB]),
97+
98+
// Intersección de dos sets
99+
interseccion: (setA, setB) =>
100+
new Set([...setA].filter(x => setB.has(x))),
101+
102+
// Diferencia de dos sets
103+
diferencia: (setA, setB) =>
104+
new Set([...setA].filter(x => !setB.has(x))),
105+
106+
// Diferencia simétrica de dos sets
107+
diferenciaSimetrica: (setA, setB) =>
108+
new Set([...setA].filter(x => !setB.has(x))
109+
.concat([...setB].filter(x => !setA.has(x))))
110+
};
111+
112+
// Ejecutar la demostración
113+
demostracionSets();

0 commit comments

Comments
 (0)