Înțelegerea seturilor cu JavaScript

Seturile pot fi foarte puternice dacă înțelegeți cum să le utilizați. Câteva aplicații ale seturilor includ rezolvarea problemelor de numărare în care este posibil să doriți să găsiți numărul de moduri în care puteți grupa împreună elemente. 

O altă aplicație este problema care vă cere să găsiți relații între elemente. Specificația ECMAScript nu include metode de operare pe seturi în acest fel. Dar este posibil să vă creați propriul. 

Ceea ce urmează este o prezentare generală a teoriei seturilor cu aplicații practice pe care le puteți utiliza pentru a extinde capacitățile JavaScript și a rezolva probleme mai complexe.

Cuprins

  • Elementele de bază
  • Uniune
  • Intersecție
  • Diferență
  • Diferența simetrică
  • Complement
  • Revizuire

Elementele de bază

Un set este o colecție neordonată de elemente care sunt toate unice. De exemplu, lista tuturor angajaților la locul de muncă este un set. Fiecare angajat ar fi un element în set. În realitate, aceste elemente ar fi stocate utilizând un număr de identificare sau de securitate socială, deoarece acestea sunt valori pe care le putem asigura că vor fi unice. Rețineți că ordinea acestor elemente este irelevantă pentru noi, deoarece numerele de sortare sau numerele de securitate socială nu au nici un sens.  

Noi numim setul nostru de angajați setul universal, deoarece conține toate elementele luate în considerare. Să ne imaginăm un alt set. Acest set este lista angajaților din compania dvs. care lucrează în departamentul de inginerie. Acesta este un subset al setului nostru de angajați, deoarece fiecare element din setul de inginerie există și în setul de angajați. Un alt subset este lista de angajați care sunt antreprenori independenți. Iată cum vom crea aceste seturi în JavaScript:

inginerie = set nou (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); să se angajeze freelanceri = set nou (['Piccolo', 'Trunks', 'Vegeta', 'Goku', 'Gohan']);

Dacă doriți să adăugați o altă persoană la unul dintre seturile noastre, am folosi sintaxa set.add (valoare) și înlocuiți-o a stabilit cu numele setului nostru și valoare cu valoarea elementului adăugat. Dacă încercăm să adăugăm un element care este deja în set, acesta nu va fi adăugat. Exemplu:

inginerie = set nou (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); engineering.add ( 'Gohan'); console.log (inginerie);

Aceasta va imprima Set 'Alberta', 'Dr. Gero ',' Trunks ',' Bulma ',' Gohan '.

Chiar acum, s-ar putea sa te gandesti si ce? Ce pot face cu aceste informații? În continuare vom vedea cum putem opera pe seturi pentru a ne ajuta să rezolvăm unele probleme comune.

Uniune

Ce se întâmplă dacă vrem să găsim toți angajații din compania noastră care sunt liber profesioniști sau care lucrează în departamentul de inginerie? Va trebui să combinăm cele două seturi și apoi să eliminăm orice nume duplicat. Aceasta se numește uniune. 

Unirea a două seturi este setul care conține elemente din set sau din cele două seturi. Observați cum elementele din setul nostru de inginerie sunt, de asemenea, stabilite de persoanele independente. Iată un mod în care puteți găsi unirea celor două seturi:

inginerie = set nou (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); să se angajeze freelanceri = set nou (['Piccolo', 'Trunks', 'Vegeta', 'Goku', 'Gohan']); lasă uniunea = set nou ([... inginer, ... freelancer]); console.log (unire);

... operatorul transformă setul nostru într-o matrice și, după combinarea celor două matrice, A stabilit constructor elimină elementele duplicat. Unirea celor două seturi va fi Set 'Alberta', 'Dr. Gero, Trunks, Bulma, Gohan, Piccolo, Vegeta și Goku..

Sarcină

Care este unirea seturilor [1, 3, 5, 7, 9] și [2, 3, 4, 6]?

Intersecție

Să presupunem că vrem să găsim toți angajații din departamentul de inginerie și liber profesioniști. Aceasta este intersecția seturilor. Intersecția a două seturi este setul care conține elemente în ambele seturi. 

Pentru a reproduce acest lucru, putem căuta printr-un singur set și verificăm dacă fiecare element se află în celălalt set. Pentru a verifica dacă un element este într-un set, folosim are metodă. Exemplu:

inginerie = set nou (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); console.log (engineering.has ( 'Alberta'));

Acest lucru ar fi adevărat. Utilizarea are metodă, putem filtra setul nostru de inginerie pentru elementele care sunt, de asemenea, în setul de liber profesioniști.

inginerie = set nou (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); să se angajeze freelanceri = set nou (['Piccolo', 'Trunks', 'Vegeta', 'Goku', 'Gohan']); lasa intersectie = set nou ([... inginerie] .filter (x => freelancers.has (x))); console.log (intersecție);

Intersecția de inginerie și de freelancer este Set 'Trunks', 'Gohan'.

Sarcină

Care este intersecția seturilor [1, 3, 5, 7, 9] și [2, 3, 4, 6]?

Diferență

Să luăm în considerare scenariul în care vrem să găsim inginerii care nu sunt liber profesioniști. Aceasta este diferența. Diferența dintre două seturi este setul care conține elemente care se află în primul set, dar nu în cel de-al doilea set. 

Pentru noi, asta inseamna ca vom incepe cu setul nostru de inginerie, si apoi vom inlatura toate elementele care sunt de asemenea stabilite de freelancer. Exemplu:

inginerie = set nou (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); să se angajeze freelanceri = set nou (['Piccolo', 'Trunks', 'Vegeta', 'Goku', 'Gohan']); permiteți diferența = set nou ([... engineering] .filter (x =>! freelancers.has (x))); console.log (diferență);

Diferența dintre setul de inginerie și setul de oameni independenți este Set 'Alberta', 'Dr. Gero ',' Bulma '. Dacă vrem să obținem lista persoanelor care sunt freelanceri și nu ingineri, începem cu setarea liberilor și eliminăm elementele care apar în setul de ingineri. Exemplu:

permiteți diferența = nou set ([... freelancers] .filter (x =>! engineering.has (x))); console.log (diferență);

Acest lucru ne dă un rezultat diferit. Diferența dintre cei stabiliți în echipă și setul de inginerie este Set 'Piccolo', 'Vegeta', 'Goku'.

Sarcină

Găsiți diferența dintre [1, 3, 5, 7, 9] și [2, 3, 4, 6].

Găsiți diferența dintre [2, 3, 4, 6] și [1, 3, 5, 7, 9].

Diferența simetrică

Acum, am dori să găsim cine din companie este fie inginer, fie independent, dar nu și pe amândouă. Aceasta este diferența simetrică. Diferența simetrică a două seturi este setul care conține elemente din oricare set, dar nu ambele seturi. 

O abordare pe care am putea să o folosim este să găsim unirea celor două seturi (oricine este un inginer, un freelancer sau ambii) și să scadă intersecția (oricine este atât inginer, cât și un freelancer). Combinând tehnicile pe care le-am folosit anterior, putem obține diferența simetrică cu următorul cod:

inginerie = set nou (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); să se angajeze freelanceri = set nou (['Piccolo', 'Trunks', 'Vegeta', 'Goku', 'Gohan']); lasă uniunea = set nou ([... inginer, ... freelancer]); lasă intersecția = nou set ([... inginerie] .filter (x => freelancers.has (x))) simetricDifference = nou set ([... union]. console.log (symmetricDifference);

Diferența simetrică a setului nostru de inginerie și a setului nostru de oameni independenți este Set 'Alberta', 'Dr. Gero ',' Bulma ',' Piccolo ',' Vegeta ',' Goku '.

Sarcină

Găsiți diferența simetrică de [1, 3, 5, 7, 9] și [2, 3, 4, 6].

Complement

Dacă avem setul de angajați și un set de ingineri, cum putem găsi setul de oameni care nu sunt ingineri? Un lucru pe care am putea să-l facem este să scăpăm setul de ingineri stabilit de angajați. Acest set este complementul inginerilor noștri stabilit în raport cu angajații noștri stabilit. Exemplu:

permiteți angajaților = ['Alberta', 'Dr. Gero, Trunks, Bulma, Gohan, Goku, Piccolo, Vegeta. inginerie = set nou (['Alberta', 'Dr. Gero', 'Trunks', 'Bulma', 'Gohan']); permiteți complement = set nou ([... employees] .filter (x =>! engineering.has (x))); console.log (complement);

Complementul setului de inginerie în raport cu angajații noștri este setat de Goku ',' Piccolo ',' Vegeta '.

Sarcină

Având setul universal [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] găsiți complementul pentru a seta [2, 4, 6, 8, 10].

Revizuire

Seturile vin la îndemână când trebuie să comparați diferite liste, să combinați liste sau să găsiți elemente unice într-o listă. Data viitoare când aveți o problemă în care trebuie să analizați date în acest fel, luați în considerare utilizarea uneia dintre operațiunile setate menționate mai sus. Iată o listă a termenilor cheie care au fost discutate:

  • Set: O colecție de elemente unice, neordonate.
  • Set universal: toate elementele posibile ale unui set.
  • Subset: Un set mai mic dintr-un set.
  • Uniunea seturilor A și B: Setul care conține elemente în A, B sau în ambele.
  • Intersecția seturilor A și B: Setul care conține elemente din ambele A și B.
  • Diferența seturilor A și B: Setul care conține elemente în A, dar nu în B.
  • Diferența simetrică a seturilor A și B: Setul care conține elemente în A sau B, dar nu și pe ambele.
  • Complet al setului A: Elementele din setul universal care nu sunt în A.

Ca de obicei, amintiți-vă dacă căutați resurse suplimentare pentru a studia sau a utiliza în munca dvs., verificați ce avem disponibil în piața Envato.

Cod