Conjunto de JavaScript y conjunto débil

En este tutorial, aprenderá sobre JavaScript Sets y WeakSets con la ayuda de ejemplos.

JavaScript ES6 ha introducido dos nuevas estructuras de datos, es decir, Sety WeakSet.

Conjunto es similar a una matriz que nos permite almacenar varios elementos como números, cadenas, objetos, etc. Sin embargo, a diferencia de una matriz, un conjunto no puede contener valores duplicados.

Crear conjunto de JavaScript

Para crear un Set, necesitas usar el new Set()constructor. Por ejemplo,

 // create Set const set1 = new Set(); // an empty set console.log(set1); // Set () // Set with multiple types of value const set2 = new Set((1, 'hello', (count : true))); console.log(set2); // Set (1, "hello", (count: true))

Cuando se pasan valores duplicados a un Setobjeto, los valores duplicados se excluyen.

 // Set with duplicate values const set3 = new Set((1, 1, 2, 2)); console.log(set3); // Set (1, 2)

Elementos del conjunto de acceso

Puede acceder a los Setelementos usando el values()método y verificar si hay un elemento dentro Setusando el has()método. Por ejemplo,

 const set1 = new Set((1, 2, 3)); // access the elements of a Set console.log(set1.values()); // Set Iterator (1, 2, 3)

Puede utilizar el has()método para comprobar si el elemento está en un conjunto. Por ejemplo,

 const set1 = new Set((1, 2, 3)); // check if an element is in Set console.log(set1.has(1));

Adición de nuevos elementos

Puede agregar elementos a un conjunto utilizando el add()método. Por ejemplo,

 const set = new Set((1, 2)); console.log(set.values()); // adding new elements set.add(3); console.log(set.values()); // adding duplicate elements // does not add to Set set.add(1); console.log(set.values());

Salida

 Establecer iterador (1, 2) Establecer iterador (1, 2, 3) Establecer iterador (1, 2, 3)

Eliminar elementos

Puede utilizar el método clear()y el delete()para eliminar elementos de un conjunto.

El delete()método elimina un elemento específico de un Set. Por ejemplo,

 const set = new Set((1, 2, 3)); console.log(set.values()); // Set Iterator (1, 2, 3) // removing a particular element set.delete(2); console.log(set.values()); // Set Iterator (1, 3)

El clear()método elimina todos los elementos de a Set. Por ejemplo,

 const set = new Set((1, 2, 3)); console.log(set.values()); // Set Iterator (1, 2, 3) // remove all elements of Set set.clear(); console.log(set.values()); // Set Iterator ()

Iterar conjuntos

Puede iterar a través de los elementos Set usando el método for… of loop o forEach (). Se accede a los elementos en la orden de inserción. Por ejemplo,

 const set = new Set((1, 2, 3)); // looping through Set for (let i of set) ( console.log(i); )

Salida

 1 2 3

Conjunto débil de JavaScript

El WeakSet es similar a un Set. Sin embargo, WeakSet solo puede contener objetos, mientras que un Set puede contener cualquier tipo de datos como cadenas, números, objetos, etc. Por ejemplo,

 const weakSet = new WeakSet(); console.log(weakSet); // WeakSet () let obj = ( message: 'Hi', sendMessage: true ) // adding object (element) to WeakSet weakSet.add(obj); console.log(weakSet); // WeakSet ((message: "Hi", sendMessage: true))

Cuando intenta agregar otros tipos de datos además de objetos, WeakSet arroja un error. Por ejemplo,

 // trying to add string to WeakSet weakSet.add('hello'); // throws error // TypeError: Attempted to add a non-object key to a WeakSet console.log(weakSet);

Métodos WeakSet

WeakSets tienen métodos add(), delete()y has(). Por ejemplo,

 const weakSet = new WeakSet(); console.log(weakSet); // WeakSet () const obj = (a:1); // add to a weakSet weakSet.add(obj); console.log(weakSet); // WeakSet ((a: 1)) // check if an element is in Set console.log(weakSet.has(obj)); // true // delete elements weakSet.delete(obj); console.log(weakSet); // WeakSet ()

Los conjuntos débiles no son iterables

A diferencia de los conjuntos, los conjuntos débiles no son iterables. Por ejemplo,

 const weakSet = new WeakSet((a:1)); // looping through WeakSet for (let i of weakSet) ( // TypeError console.log(i); )

Operaciones de conjuntos matemáticos

En JavaScript, Set no proporciona métodos integrados para realizar operaciones matemáticas como unión, intersección, diferencia, etc. Sin embargo, podemos crear programas para realizar esas operaciones.

Ejemplo: Establecer operación de unión

 // perform union operation // contain elements of both sets function union(a, b) ( let unionSet = new Set(a); for (let i of b) ( unionSet.add(i); ) return unionSet ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = union(setA, setB); console.log(result);

Salida

 Conjunto ("manzana", "mango", "naranja", "uvas", "plátano")

Ejemplo: Establecer operación de intersección

 // perform intersection operation // elements of set a that are also in set b function intersection(setA, setB) ( let intersectionSet = new Set(); for (let i of setB) ( if (setA.has(i)) ( intersectionSet.add(i); ) ) return intersectionSet; ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = intersection(setA, setB); console.log(result);

Salida

 Establecer ("manzana")

Ejemplo: Establecer operación de diferencia

 // perform difference operation // elements of set a that are not in set b function difference(setA, setB) ( let differenceSet = new Set(setA) for (let i of setB) ( differenceSet.delete(i) ) return differenceSet ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = difference(setA, setB); console.log(result);

Salida

 Conjunto ("mango", "naranja")

Ejemplo: Establecer operación de subconjunto

 // perform subset operation // true if all elements of set b is in set a function subset(setA, setB) ( for (let i of setB) ( if (!setA.has(i)) ( return false ) ) return true ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('apple', 'orange')); let result = subset(setA, setB); console.log(result);

Salida

 cierto

JavaScript Setsy WeakSetsse introdujeron en ES6 . Es posible que algunos navegadores no admitan su uso. Para obtener más información, visite Soporte de JavaScript Sets y Soporte de JavaScript WeakSets.

Articulos interesantes...