Skip to content


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 3.


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 for details of current decisions made in this proposal.

Rendered spec text is available here.


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.


See naming bikeshedding document for details.

We decided to choose:

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