Comprendre les ensembles avec JavaScript

Les ensembles peuvent être très puissants si vous comprenez comment les utiliser. Quelques applications des ensembles incluent la résolution de problèmes de comptage dans lesquels vous pouvez rechercher le nombre de façons dont vous pouvez regrouper des éléments.. 

Une autre application concerne les problèmes qui nécessitent que vous trouviez des relations entre des éléments. La spécification ECMAScript n'inclut pas de méthodes permettant d'opérer de la sorte sur des ensembles. Mais il est possible de créer votre propre. 

Ce qui suit est un aperçu de la théorie des ensembles avec des applications pratiques que vous pouvez utiliser pour étendre les capacités de JavaScript et résoudre des problèmes plus complexes..

Contenu

  • Les bases
  • syndicat
  • Intersection
  • Différence
  • Différence symétrique
  • Complément
  • La revue

Les bases

Un ensemble est une collection non ordonnée d’éléments uniques. Par exemple, la liste de tous les employés à votre travail est un ensemble. Chaque employé serait un élément de l'ensemble. En réalité, ces éléments seraient stockés à l'aide d'un identifiant ou d'un numéro de sécurité sociale, car ce sont des valeurs que nous pouvons garantir d'être uniques. Notez que l'ordre de ces éléments ne nous concerne pas car le tri des identifiants ou des numéros de sécurité sociale n'a aucune signification.  

Nous appelons notre ensemble d'employés l'ensemble universel car il contient tous les éléments à l'étude. Imaginons un autre ensemble. Cet ensemble est la liste des employés de votre entreprise qui travaillent dans le département d’ingénierie. Il s'agit d'un sous-ensemble de notre ensemble d'employés, car chaque élément de l'ensemble d'ingénierie existe également dans l'ensemble d'employés. Un autre sous-ensemble est la liste des employés qui sont des entrepreneurs indépendants. Voici comment nous créerions ces ensembles en JavaScript:

let engineering = new Set (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); let freelancers = new Set (['Piccolo', 'Trunks', 'Vegeta', 'Goku', 'Gohan']);

Si vous souhaitez ajouter une autre personne à l'un de nos ensembles, nous utiliserons la syntaxe set.add (valeur) et remplacer ensemble avec le nom de notre ensemble et valeur avec la valeur de l'élément ajouté. Si nous essayons d'ajouter un élément qui est déjà dans l'ensemble, il ne sera pas ajouté. Exemple:

let engineering = new Set (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); ingénierie.add ('Gohan'); console.log (ingénierie);

Ceci imprimera Set 'Alberta', 'Dr. Gero ',' Trunks ',' Bulma ',' Gohan '.

En ce moment, vous pensez peut-être alors quoi? Que puis-je faire avec cette information? Ensuite, nous verrons comment nous pouvons utiliser des ensembles pour nous aider à résoudre certains problèmes courants..

syndicat

Et si nous voulions trouver tous les employés de notre entreprise qui sont des pigistes ou qui travaillent dans le département d’ingénierie? Nous aurions besoin de combiner les deux ensembles, puis de supprimer tous les noms en double. Ceci s'appelle l'union. 

L'union de deux ensembles est l'ensemble qui contient des éléments de l'un ou l'autre ou des deux ensembles. Remarquez comment les éléments de notre ensemble d'ingénierie sont également dans l'ensemble des pigistes. Voici un moyen de trouver l'union des deux ensembles:

let engineering = new Set (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); let freelancers = new Set (['Piccolo', 'Trunks', 'Vegeta', 'Goku', 'Gohan']); let union = new Set ([… ingénieurs,… pigistes]); console.log (union);

le opérateur transforme notre ensemble en un tableau, et après avoir combiné les deux tableaux, le Ensemble constructeur supprime les éléments en double. L'union des deux ensembles sera Set 'Alberta', 'Dr. Gero ',' Trunks ',' Bulma ',' Gohan ',' Piccolo ',' Vegeta ',' Goku '.

Tâche

Quelle est l’union des ensembles [1, 3, 5, 7, 9] et [2, 3, 4, 6]?

Intersection

Supposons que nous voulions trouver tous les employés qui sont dans le département d'ingénierie et qui sont des pigistes. C'est l'intersection des ensembles. L'intersection de deux ensembles est l'ensemble contenant des éléments dans les deux ensembles. 

Pour reproduire cela, nous pouvons rechercher dans un ensemble et vérifier si chaque élément est dans l'autre. Pour vérifier si un élément est dans un ensemble, nous utilisons le a méthode. Exemple:

let engineering = new Set (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); console.log (engineering.has ('Alberta'));

Cela reviendrait vrai. En utilisant le a méthode, nous pouvons filtrer notre ensemble d'ingénierie pour les éléments qui sont également dans l'ensemble des pigistes.

let engineering = new Set (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); let freelancers = new Set (['Piccolo', 'Trunks', 'Vegeta', 'Goku', 'Gohan']); let intersection = new Set ([… engineering] .filter (x => freelancers.has (x))); console.log (intersection);

L'intersection de l'ingénierie et des pigistes est Set 'Trunks', 'Gohan'.

Tâche

Quelle est l'intersection des ensembles [1, 3, 5, 7, 9] et [2, 3, 4, 6]?

Différence

Examinons le scénario dans lequel nous voulons trouver des ingénieurs qui ne sont pas des pigistes. C'est la différence La différence de deux ensembles correspond à l'ensemble contenant les éléments qui sont dans le premier ensemble, mais pas dans le deuxième.. 

Pour nous, cela signifie que nous allons commencer par notre ensemble d'ingénierie, puis supprimer tous les éléments qui figurent également dans l'ensemble des pigistes. Exemple:

let engineering = new Set (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); let freelancers = new Set (['Piccolo', 'Trunks', 'Vegeta', 'Goku', 'Gohan']); Soit différence = nouvel ensemble ([... engineering] .filter (x =>! freelancers.has (x))); console.log (différence);

La différence entre le groupe d'ingénierie et le groupe de pigistes est Set 'Alberta', 'Dr. Gero ',' Bulma '. Si nous voulons obtenir la liste des personnes qui sont des pigistes et non des ingénieurs, nous commençons avec le jeu de pigistes et retirons les éléments qui apparaissent dans le jeu d'ingénieurs. Exemple:

Soit différence = nouvel ensemble ([… pigistes] .filter (x =>! engineering.has (x))); console.log (différence);

Cela nous donne un résultat différent. La différence entre les freelancers et les ingénieurs est Set 'Piccolo', 'Vegeta', 'Goku'.

Tâche

Trouvez la différence entre [1, 3, 5, 7, 9] et [2, 3, 4, 6].

Trouvez la différence entre [2, 3, 4, 6] et [1, 3, 5, 7, 9].

Différence symétrique

Maintenant, nous aimerions savoir qui dans la société est un ingénieur ou un pigiste, mais pas les deux. C'est la différence symétrique. La différence symétrique de deux ensembles correspond à l'ensemble contenant les éléments de l'un ou l'autre ensemble, mais pas aux deux ensembles.. 

Une approche que nous pourrions utiliser consiste à rechercher l’union des deux ensembles (tous les ingénieurs, pigistes ou les deux) et à soustraire l’intersection (tous les ingénieurs et les pigistes). En combinant les techniques que nous avons utilisées précédemment, nous pouvons obtenir la différence symétrique avec le code suivant:

let engineering = new Set (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); let freelancers = new Set (['Piccolo', 'Trunks', 'Vegeta', 'Goku', 'Gohan']); let union = new Set ([… ingénieurs,… pigistes]); let intersection = new Set ([... engineering] .filter (x => pigistes.has (x))) let symmetricDifference = new Set ([... union] .filter (x =>! intersection.has (x))); console.log (symmetricDifference);

La différence symétrique de notre ensemble d'ingénierie et de notre ensemble de pigistes est Set 'Alberta', 'Dr. Gero ',' Bulma ',' Piccolo ',' Vegeta ',' Goku '.

Tâche

Trouver la différence symétrique de [1, 3, 5, 7, 9] et [2, 3, 4, 6].

Complément

Si nous avons notre ensemble d'employés et un ensemble d'ingénieurs, comment pourrions-nous trouver l'ensemble de toutes les personnes qui ne sont pas ingénieurs? Une chose que nous pourrions faire est de soustraire le groupe d’ingénieurs du groupe d’employés. Cet ensemble est le complément de nos ingénieurs par rapport à nos employés. Exemple:

laisser employés = ['Alberta', 'Dr. Gero ',' Trunks ',' Bulma ',' Gohan ',' Goku ',' Piccolo ',' Vegeta ']; let engineering = new Set (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); let complément = new Set ([… employés] .filter (x =>! engineering.has (x))); console.log (complément);

Le complément à l'ensemble d'ingénierie en relation avec l'ensemble de nos employés est Set 'Goku', 'Piccolo', 'Vegeta'.

Tâche

Étant donné l'ensemble universel [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], trouvez le complément de l'ensemble [2, 4, 6, 8, 10].

La revue

Les ensembles sont pratiques lorsque vous devez comparer différentes listes, combiner des listes ou rechercher des éléments uniques dans une liste. La prochaine fois que vous rencontrez un problème pour lequel vous devez analyser des données de cette manière, envisagez d’utiliser l’une des opérations définies mentionnées ci-dessus. Voici une liste des termes clés qui ont été discutés:

  • Set: Une collection d'éléments uniques et non ordonnés.
  • Ensemble universel: tous les éléments possibles d'un ensemble.
  • Sous-ensemble: un ensemble plus petit dans un ensemble.
  • Union des ensembles A et B: ensemble contenant des éléments dans A, B ou les deux..
  • Intersection des ensembles A et B: ensemble contenant des éléments de A et B.
  • Différence des ensembles A et B: l'ensemble contenant des éléments dans A mais pas dans B.
  • Différence symétrique des ensembles A et B: ensemble contenant des éléments dans A ou B, mais pas les deux..
  • Complément de l'ensemble A: Les éléments de l'ensemble universel qui ne sont pas dans A.

Comme d'habitude, rappelez-vous que si nous recherchons des ressources supplémentaires à étudier ou à utiliser dans votre travail, consultez les ressources disponibles sur le marché Envato..