Over verzamelingen in JavaScript
In het item "Over Verzamelingen" wordt in iets verteld over verzamelingen in het algemeen en over getallen in het bijzonder. Met Venn-diagrammen kunnen relaties tussen verzamelingen worden zichtbaar gemaakt.
JavaScript kent een datatype voor verzamelingen: Set
.
Een Set
is een Object
. Het bevat een collectie uit alle in JavaScript mogelijke datatypen. Elk
element is uniek.Voor het beheren van de data in de Set
zijn een aantal methodes en één eigenschap
beschikbaar.
Qua notatie ziet een Set er uit als een Array. Dat kan verwarrend zijn, wees daar dus op bedacht.
Onderstaand overzicht geeft de methodes voor verzamelingen in JavaScript.
Steeds wordt een set gebruikt die is gemaakt met:
let mijnSet = new Set(["a","b","c",1,2,3]);
mijnSet.add("d")
Voegt het element"d"
toe aanmijnSet
.
Omdat alle elementen in een set uniek zijn, zal de opdrachtmijnSet.add("a")
worden genegeerd. De set bevat immers al een element"a"
.mijnSet.clear()
Verwijdert alle elementen uitmijnSet
.mijnSet.delete("a")
Verwijdert element"a"
. uitmijnSet
.mijnSet.entries()
Geeft een reeks van dataparen[key,waarde]
terug. Omdat sets geenkey
s kent, geeftentries()
een reeks paren[waarde,waarde]
terug. Feiltelijk is de key gelijk aan de waarde. In het geval vanmijnSet
wordt dat[a,a],[b,b],[c,c],[1,1],[2,2],[3,3]
.
Een dergelijke reeks wordt Iterator genoemd.mijnSet.forEach("")
Loopt een Iterator, die metentries()
voormijnSet
is bepaald, één voor één af.mijnSet.has("e")
Kijkt of "e" inmijnSet
aanwezig is. Als dat zo is wordt true teruggegeven, anders false.
In dit geval zou false het resultaat zijn.mijnSet.keys()
Geeft een Iterator terug met keys vanmijnSet
. In de praktijk zijn dat de waarden.mijnSet.values()
Geeft een Iterator terug met waarden vanmijnSet
.mijnSet.size
Deze eigenschap bevat het aantal elementen inmijnSet
.
Sinds 2025 is in JavaScript een aantal methodes toegevoegd, waarmee het mogelijk is om bewerkingen met verzamelingen uit
te voeren, zie onderstaand overzicht en het item over Venn-diagrammen.
Deze methodes accepteren niet alleen sets als argument, maar alles wat er op lijkt, waaronder maps. Arrays en Weak Sets horen
daar niet bij.
De sets A
en B
zijn gemaakt met:
let A = new Set([1,2,3,4])
let B = new Set([2,4,6,8])
- Vereniging:
C = A ∪ B
De codelet C = A.union(B)
geeft als resultaat: C = [1,2,3,4,6,8]. - Doorsnede:
C = A ∩ B
De codelet C = A.intersection(B)
geeft als resultaat: C = [2,4]. - LegeDoorsnede:
C = A ∩ B, C = Ø
De codelet C = A.isDisjointFrom(B)
geeft als resultaat: false, want de doorsnede is niet leeg. - Verschil:
C = A \ B
De codelet C = A.difference(B)
geeft als resultaat: C = [1,3]. - Symmetrisch Verschil:
C = A &Delta B
De codelet C = A.symmetricDifference(B)
geeft als resultaat: C = [1,3,6,8]. - Deelverzameling:
C = B ⊂ A
De codelet C = B.isSubSetOf(A)
geeft als resultaat: false. - Omvat:
C = A ⊃ B
De codelet C = A.isSuperSetOf(B)
geeft als resultaat: false.
Bronnen:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
https://www.w3schools.com/js/js_sets.asp
Opmerking:
Zie ook de items over Weak Sets en Maps (in voorbereiding)