Skip to content
This repository has been archived by the owner on Jul 8, 2024. It is now read-only.

tc39/proposal-set-methods

Repository files navigation

Set Methods for JavaScript

This is a proposal to add methods like union and intersection to JavaScript's built-in Set class.

It is currently at stage 4: it has been added to the specification. This repository is no longer active.

Original readme follows.

Proposal

This would add the following methods:

  • Set.prototype.intersection(other)
  • Set.prototype.union(other)
  • Set.prototype.difference(other)
  • Set.prototype.symmetricDifference(other)
  • Set.prototype.isSubsetOf(other)
  • Set.prototype.isSupersetOf(other)
  • Set.prototype.isDisjointFrom(other)

These methods would all require their arguments to be a Set, or at least something which looks like a Set in terms of having a numeric size property as well as keys and has methods.

See details.md for details of current decisions made in this proposal.

Rendered spec text is available here.

The proposal was originally authored by Michał Wadas and later championed by Sathya Gunasekaran and Kevin Gibbons.

Implementations

This proposal is ready for engines to implement and ship. See this issue for current status.

TC39 meeting notes

(Semi)relevant previous discussions

Comparison with other languages

See other languages document to get overview of Set methods in other languages.

Naming

See naming bikeshedding document for details.

We decided to choose:

  • Symmetric difference - symmetricDifference
  • Intersection - intersection
  • Union - union
  • Difference - difference

Polyfills