Conjunto de JavaScript e WeakSet

Neste tutorial, você aprenderá sobre conjuntos de JavaScript e WeakSets com a ajuda de exemplos.

O JavaScript ES6 introduziu duas novas estruturas de dados, ou seja, Sete WeakSet.

Set é semelhante a um array que nos permite armazenar vários itens como números, strings, objetos, etc. No entanto, ao contrário de um array, um conjunto não pode conter valores duplicados.

Criar conjunto de JavaScript

Para criar um Set, você precisa usar o new Set()construtor. Por exemplo,

 // 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))

Quando valores duplicados são passados ​​para um Setobjeto, os valores duplicados são excluídos.

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

Elementos do conjunto de acesso

Você pode acessar os Setelementos usando o values()método e verificar se há um elemento dentro do método Setusando has(). Por exemplo,

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

Você pode usar o has()método para verificar se o elemento está em um Conjunto. Por exemplo,

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

Adicionando Novos Elementos

Você pode adicionar elementos a um Conjunto usando o add()método. Por exemplo,

 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());

Resultado

 Set Iterator (1, 2) Set Iterator (1, 2, 3) Set Iterator (1, 2, 3)

Removendo Elementos

Você pode usar o clear()e o delete()método para remover elementos de um conjunto.

O delete()método remove um elemento específico de a Set. Por exemplo,

 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)

O clear()método remove todos os elementos de a Set. Por exemplo,

 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

Você pode iterar através dos elementos Set usando o método for … of loop ou forEach (). Os elementos são acessados ​​no pedido de inserção. Por exemplo,

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

Resultado

 1 2 3

JavaScript WeakSet

O WeakSet é semelhante a um Set. No entanto, WeakSet só pode conter objetos, enquanto um Set pode conter quaisquer tipos de dados, como strings, números, objetos, etc.

 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))

Quando você tenta adicionar outros tipos de dados além de objetos, WeakSet lança um erro. Por exemplo,

 // 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 têm métodos add(), delete()e has(). Por exemplo,

 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 ()

WeakSets não são iteráveis

Ao contrário dos conjuntos, os WeakSets não são iteráveis. Por exemplo,

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

Operações matemáticas de conjuntos

Em JavaScript, Set não fornece métodos integrados para realizar operações matemáticas como união, interseção, diferença, etc. No entanto, podemos criar programas para realizar essas operações.

Exemplo: Definir operação de união

 // 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);

Resultado

 Conjunto ("maçã", "manga", "laranja", "uvas", "banana")

Exemplo: Definir operação de interseção

 // 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);

Resultado

 Conjunto ("maçã")

Exemplo: Operação Definir Diferença

 // 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);

Resultado

 Conjunto ("manga", "laranja")

Exemplo: Definir operação 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);

Resultado

 verdade

JavaScript Setse WeakSetsforam introduzidos no ES6 . Alguns navegadores podem não suportar seu uso. Para saber mais, visite JavaScript Sets support e JavaScript WeakSets support.

Artigos interessantes...