Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. ES6
Code

Entendiendo Conjuntos Con JavaScript

by
Difficulty:IntermediateLength:MediumLanguages:

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

Los conjuntos pueden ser poderosos si entiendes cómo usarlos. Unas cuantas aplicaciones de conjuntos incluyen resolver problemas de conteo en donde podrías encontrar el número de formas en que puedes agrupar elementos.

Otra aplicación son problemas que requieren que encuentres relaciones entre elementos. La especificación ECMAScript no incluye métodos para operar en conjuntos de esta manera. Pero es posible crear una propia.

Lo que sigue es un vistazo general de teoría de conjuntos con aplicaciones prácticas que puedes usar para extender las capacidades de JavaScript y resolver problemas más complejos.

Contenidos

  • Básicos
  • Unión
  • Intersección
  • Diferencia
  • Diferencia Simétrica
  • Complemento
  • Revisión

Básicos

Un conjunto es una colección ordenada de elementos todos únicos. Por ejemplo, la lista de todos los empleados en tu trabajo es un conjunto. Cada empleado sería un elemento en el conjunto. En la realidad, estos elementos deberían ser almacenados usando un ID o número de Seguridad Social debido a que estos valores pueden asegurar que serán únicos. Nota cómo el orden de estos elementos es irrelevante para nosotros porque ordenar IDs o números de Seguridad Social no tiene sentido.

Podemos llamar a nuestro conjunto de empleados el conjunto universal porque contiene a todos los elementos bajo consideración. Imaginemos otro conjunto. Este conjunto es la lista de empleados en tu compañía que trabajan en el departamento de ingeniería. Este es un subconjunto de nuestro conjunto de empleados porque cada elemento en el conjunto de ingeniería también existe en el conjunto de empleados. Otro subconjunto es la lista de empleados que son contratistas independientes. Aquí está cómo crearíamos estos conjuntos en JavaScript:

Si quieres agregar otra persona a uno de nuestros conjuntos, usaríamos la sintaxis set.add(value) y reemplazamos set con el nombre de nuestro conjunto y value con el elemento siendo agregado. Si intentamos agregar un elemento que ya está en el conjunto, este no será agregado. Ejemplo:

Esto imprimirá Set { 'Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan' }.

Justo ahora, podrías estar pensando ¿y qué? ¿Qué puedo hacer con esta información? A continuación veremos cómo podemos operar sobre conjuntos para ayudarnos a resolver algunos problemas comunes.

Unión

¿Y si queremos encontrar a todos los empleados en nuestra compañía que son independientes o quienes trabajan en el departamento de ingeniería? Necesitaríamos combinar los dos conjuntos, y después remover cualquier nombre duplicado. Esto se llama unión.

La unión de dos conjuntos es el conjunto que contiene elementos de cualquier conjunto o ambos conjuntos. Nota cómo los elementos en nuestro conjunto de ingeniería están también en el conjunto de independientes. Aquí está una forma en la que puedes encontrar la unión de ambos conjuntos:

El operador convierte a nuestro conjunto en un arreglo, y después combina los dos arreglos, el constructor Set remueve los elementos duplicados. La unión de los dos conjuntos será Set {'Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan', 'Piccolo', 'Vegeta', 'Goku' }.

Tarea

¿Cuál es la unión de los conjuntos [1, 3, 5, 7, 9] y [2, 3, 4, 6]?

Intersección

Supón que queremos encontrar a todos los empleados que están en el departamento de ingeniería y que son independientes. Esta es la intersección de los conjuntos. La intersección de dos conjuntos es el conjunto que contiene elementos en ambos conjuntos.

Para reproducir esto, podemos buscar a través de un conjunto y revisar si cada elemento está en el otro conjunto. Para revisar si un elemento está en el conjunto, usamos el método has. Ejemplo:

Esto devolvería verdadero. Usando el método has, podemos filtrar nuestro conjunto de ingeniería para elementos que también están en el conjunto de independientes.

La intersección de ingeniería e independientes es Set { 'Trunks', 'Gohan' }.

Tarea

¿Cuál es la intersección de los conjuntos [1, 3, 5, 7, 9] y [2, 3, 4, 6]?

Diferencia

Consideremos el escenario en donde queremos encontrar a los ingenieros que no son independientes. Esta es la diferencia. La diferencia de dos conjuntos es el conjunto conteniendo elementos que están en el primer conjunto, pero no en el segundo.

Para nosotros, esto significa que comenzaremos con nuestro conjunto de ingeniería, y después removeremos cualquier elemento que también están en el conjunto de independientes. Ejemplo:

La diferencia del conjunto de ingeniería y el conjunto de independientes es Set { 'Alberta', 'Dr. Gero', 'Bulma' }. Si queremos obtener la lista de personas que son independientes y no ingenieros, comenzamos con el conjunto de independientes y removemos los elementos que aparecen en el conjunto de ingenieros. Ejemplo:

Esto nos da un resultado diferente. La diferencia del conjunto de independientes y el conjunto de ingeniería es Set { 'Piccolo', 'Vegeta', 'Goku' }.

Tarea

Encuentra la diferencia de [1, 3, 5, 7, 9] y [2, 3, 4, 6].

Encuentra la diferencia de [2, 3, 4, 6] y [1, 3, 5, 7, 9].

Diferencia Simétrica

Ahora, quisiéramos encontrar quién en la compañía es ya sea un ingeniero o un independiente, pero no ambos. Esta es la diferencia simétrica. La diferencia simétrica de dos conjuntos es el conjunto conteniendo elementos de cualquiera de los dos conjuntos, pero no de ambos.

Una aproximación que podríamos usar es encontrar la unión de los dos conjuntos (todos los que sean ingenieros, independientes, o ambos) y sustraer la intersección (todos los que sean ingenieros e independientes). Combinando las técnicas que usamos anteriormente, podemos obtener la diferencia simétrica con el siguiente código:

La diferencia simétrica de nuestro conjunto de ingeniería y nuestro conjunto de independientes es Set { 'Alberta', 'Dr. Gero', 'Bulma', 'Piccolo', 'Vegeta', 'Goku' }.

Tarea

Encuentra la diferencia simétrica de [1, 3, 5, 7, 9] y [2, 3, 4, 6].

Complemento

Si tenemos nuestro conjunto de empleados y un conjunto de ingenieros, ¿cómo podríamos encontrar el conjunto de toda la gente que no son ingenieros? Una cosa que podríamos hacer es sustraer al conjunto de ingenieros del conjunto de empleados. Este conjunto es el complemento de nuestro conjunto de ingenieros en relación a nuestro conjunto de empleados. Ejemplo:

El complemento al conjunto de ingeniería en relación a nuestro conjunto de empleados es Set { 'Goku', 'Piccolo', 'Vegeta' }.

Tarea

Dado el conjunto universal [1 ,2, 3, 4, 5, 6, 7, 8, 9, 10], encuentra el complemento al conjunto [2, 4, 6, 8, 10].

Revisión

Los conjuntos resultan útiles cuando necesitas comparar diferentes listas, combinar listas, o encontrar elementos únicos en una lista. La siguiente vez que tengas un problema en donde necesites analizar datos de esta manera, considera usar una de las operaciones de conjunto mencionadas arriba. Aquí está una lista de términos clave que hemos discutido:

  • Conjunto: Una colección de elementos únicos, sin orden.
  • Conjunto universal: Todos los elementos posibles de un conjunto.
  • Subconjunto: Un conjunto más pequeño dentro de un conjunto.
  • Unión de conjuntos A y B: El conjunto que contiene elementos en A, B o ambos.
  • Intersección de conjuntos A y B: El conjunto conteniendo elementos tanto de A como de B.
  • Diferencia de conjuntos A y B: El conjunto conteniendo elementos en A pero no en B.
  • Diferencia simétrica de conjuntos A y B: El conjunto conteniendo elementos en A o B, pero no ambos.
  • Complemento de conjunto A: Los elementos en el conjunto universal que no están en A.

Como es usual, recuerda que si estás buscando recursos adicionales para estudiar o usar en tu trabajo, revisa lo que tenemos disponible en Envato Market.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.