Cuando trabajamos con datos en programación, muchas veces lo hacemos en forma de conjuntos. Por ejemplo, si quieres comparar dos listas de usuarios o encontrar elementos comunes entre dos bases de datos, estás aplicando ideas de la teoría de conjuntos.
No necesitas ser un experto en matemáticas para usar estos conceptos, basta con entender algunos principios básicos y las operaciones más comunes. En esta lección, exploraremos las nociones esenciales de conjuntos y cómo aplicarlas en JavaScript.
¿Qué es un Conjunto?
Por ejemplo, el conjunto de dígitos en nuestro sistema numérico es:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Lo más importante en un conjunto es que no puede haber elementos repetidos. Es decir, {1, 1, 3} no es un conjunto válido, pero {1, 3, 5} sí lo es.
Los conjuntos no solo aplican a números. También podemos pensar en un grupo de personas, las ciudades de un país o los ingredientes de una receta como conjuntos.
⏬ Por ejemplo:
- Las ciudades de Colombia:
{Bogotá, Medellín, Cali, Barranquilla, Cartagena} - Los colores primarios:
{rojo, azul, amarillo} - Tus amigos en Facebook también forman un conjunto.
Relaciones entre Conjuntos
Podemos comparar conjuntos para ver si uno contiene a otro.
Por ejemplo, el conjunto de números naturales {1, 2, 3, 4, 5...} es parte del conjunto más grande de números enteros {...-2, -1, 0, 1, 2...}. En este caso:
- Subconjunto: Todos los elementos de un conjunto están dentro de otro.
- Superconjunto: Un conjunto que contiene completamente a otro.
Así lo podríamos representar gráficamente:
Este tipo de relaciones son útiles en programación, por ejemplo, cuando queremos verificar si una lista de usuarios registrados pertenece a una lista general de clientes.
Operaciones con Conjuntos
Para que los conjuntos sean útiles, necesitamos realizar operaciones con ellos. Vamos a ver algunas de las más comunes.
Intersección
⏬ Ejemplo: Amigos en común en redes sociales
Si en una red social tienes una lista de amigos y otra persona tiene otra lista, la intersección serían los amigos en común.
const friends1 = ['Carlos', 'Mateo', 'Luis'];
const friends2 = ['Jorge', 'Luis', 'Santiago', 'Carlos', 'Fernando'];
// Encontramos los amigos en común usando Lodash
const amigosEnComun = _.intersection(friends1, friends2);
console.log(amigosEnComun); // ['Carlos', 'Luis']
Esto es útil en aplicaciones donde es necesario encontrar elementos compartidos, como productos comunes entre dos tiendas o eventos a los que asisten dos personas.
Unión
⏬ Ejemplo: Lista total de amigos
const amigosUnidos = _.union(friends1, friends2);
console.log(amigosUnidos);
// ['Carlos', 'Mateo', 'Luis', 'Jorge', 'Santiago', 'Fernando']
Esto puede ser útil en aplicaciones que combinan datos de diferentes fuentes, como fusionar registros de clientes de varias bases de datos.
Diferencia
⏬ Ejemplo: Amigos que tú tienes pero el otro usuario no
const amigosDiferentes = _.difference(friends1, friends2);
console.log(amigosDiferentes); // ['Mateo']
Esta operación es útil cuando necesitas saber qué elementos faltan en una lista comparada con otra, por ejemplo, qué productos no están disponibles en cierto inventario.
Pertenencia a un Conjunto
.includes() en JavaScript.
⏬ Ejemplo: Números considerados "de mala suerte"
const numerosTerribles = [4, 13];
if (numerosTerribles.includes(10)) {
console.log('¡guau!');
} else {
console.log('No es un número terrible.');
}
Esta operación es común al verificar si un usuario tiene ciertos permisos o si un producto está en la lista de favoritos de un usuario.
Resumen
- El conjunto es una colección de elementos únicos.
- El subconjunto es un conjunto cuyos elementos están completamente dentro de otro.
- En intersección, buscamos los elementos en común entre dos conjuntos.
- En unión, combinamos los elementos de ambos conjuntos sin duplicados.
- En diferencia, obtenemos los elementos de un conjunto que no están en el otro.
- La pertenencia permite verificar si un elemento está dentro de un conjunto.
Materiales adicionales
- La saga de los números (pdf).
- Método includes incorporado.
- Función intersection / Lodash.
- Función union / Lodash.
- Función difference / Lodash.
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.