JavaScript: Estructura de datos Set: Intersección

JavaScript: Estructura de datos Set: Intersección

La estructura de datos Set en JavaScript es una colección de valores únicos de cualquier tipo de datos como números, cadenas, booleanos y objetos. La intersección es una operación que nos permite encontrar los elementos comunes en dos o más conjuntos. En este artículo, aprenderemos a utilizar la estructura de datos Set para encontrar la intersección entre dos conjuntos.

📋 Aquí podrás encontrar✍
  1. ¿Qué es la intersección?
  2. Cómo encontrar la intersección de múltiples conjuntos
  3. Utilizando el método intersect()
  4. Conclusión
  5. Preguntas frecuentes
    1. ¿La estructura de datos Set es más eficiente que un array?
    2. ¿Puedo usar objetos como elementos en un Set?
    3. ¿Cómo elimino un elemento de un Set?
    4. ¿Cómo puedo convertir un Set en un array?

¿Qué es la intersección?

La intersección se refiere a la operación que se realiza entre dos o más conjuntos para encontrar los elementos comunes. Es decir, si tenemos dos conjuntos A y B, la intersección de A y B serían los elementos que se encuentran en ambos.

En el siguiente ejemplo, podemos encontrar la intersección de dos conjuntos utilizando bucles for y el método has() de la estructura de datos Set:


const conjuntoA = new Set([1, 2, 3, 4, 5]);
const conjuntoB = new Set([4, 5, 6, 7, 8]);
const interseccion = new Set();
for (const valor of conjuntoA) {
if (conjuntoB.has(valor)) {
interseccion.add(valor);
}
}
console.log(interseccion); // Resultado: Set(2) {4, 5}

Cómo encontrar la intersección de múltiples conjuntos

Podemos encontrar la intersección de más de dos conjuntos utilizando el método reduce() y la intersección de dos conjuntos. El método reduce() toma una función reductora y la aplica acumulativamente a cada valor en el array para devolver un único valor.

En el siguiente ejemplo, encontramos la intersección de tres conjuntos utilizando reduce() y la función de intersección anterior:


const conjuntoA = new Set([1, 2, 3, 4, 5]);
const conjuntoB = new Set([4, 5, 6, 7, 8]);
const conjuntoC = new Set([3, 5, 8, 9, 10]);
const interseccion = [conjuntoA, conjuntoB, conjuntoC].reduce((a, b) => new Set([...a].filter(valor => b.has(valor))));
console.log(interseccion); // Resultado: Set(1) {5}

Utilizando el método intersect()

Una forma más sencilla de encontrar la intersección de dos o más conjuntos es utilizando el método intersect() que podemos agregar a nuestro prototipo de Set.


Set.prototype.intersect = function(setB) {
let interseccion = new Set();
for (const valor of setB) {
if (this.has(valor)) {
interseccion.add(valor);
}
}
return interseccion;
}

Una vez que hemos agregado el método intersect() al prototipo de Set, podemos utilizarlo para encontrar la intersección de dos o más conjuntos de esta forma:


const conjuntoA = new Set([1, 2, 3, 4, 5]);
const conjuntoB = new Set([4, 5, 6, 7, 8]);
const conjuntoC = new Set([3, 5, 8, 9, 10]);
const interseccionABC = conjuntoA.intersect(conjuntoB).intersect(conjuntoC);
console.log(interseccionABC); // Resultado: Set(1) {5}

Conclusión

En este artículo, hemos aprendido cómo encontrar la intersección entre dos o más conjuntos utilizando la estructura de datos Set en JavaScript. Ahora puedes utilizar esta técnica para realizar operaciones de conjuntos y encontrar los valores comunes entre ellos.

Preguntas frecuentes

¿La estructura de datos Set es más eficiente que un array?

Sí, la estructura de datos Set es más eficiente que un array cuando se tratan de operaciones de búsqueda, como encontrar un valor o comprobar si un valor existe en la estructura. Esto se debe a que Set tiene una complejidad de tiempo constante O(1) para estas operaciones mientras que la complejidad de un array es lineal.

¿Puedo usar objetos como elementos en un Set?

Sí, puedes utilizar objetos como elementos en un Set. Debes tener en cuenta que el método has() utiliza la igualdad débil para comparar los objetos, lo que significa que dos objetos con las mismas propiedades pero en diferentes espacios de memoria no serán considerados iguales.

¿Cómo elimino un elemento de un Set?

Para eliminar un elemento de un Set, se utiliza el método delete().


const miSet = new Set([1, 2, 3]);
miSet.delete(2);
console.log(miSet); // Resultado: Set(2) {1, 3}

¿Cómo puedo convertir un Set en un array?

Para convertir un Set en un array, podemos utilizar el operador spread o el método Array.from().


const miSet = new Set([1, 2, 3]);
const miArray = [...miSet];
const miOtroArray = Array.from(miSet);
console.log(miArray); // Resultado: [1, 2, 3]
console.log(miOtroArray); // Resultado: [1, 2, 3]

[nekopost slugs="use-array-json-objects-javascript,obtenga-el-ano-en-curso-en-javascript,hay-una-arraylist-en-javascript,ronda-a-1-lugar-decimal-en-javascript,crear-boton-javascript,javascript-equivalente-printf-o-formato-de-cadena,modifique-la-url-en-javascript-sin-recargar-la-pagina,analizar-una-cadena-html-con-javascript,javascript-verifique-si-la-variable-existe-se-define-inicializada"]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir