Spec-Zone.ru › JavaScript

Set.prototype.symmetricDifference()

Baseline Newly available

This feature works across the latest devices and browser versions. This feature might not work in older devices or browser versions. It's been available across browsers since June 2024.

The symmetricDifference() method of Set instances takes a set and returns a new set containing elements which are in either this set or the given set, but not in both.

Syntax

symmetricDifference(other)

Parameters

other
A Set object, or set-like object.

Return value

A new Set object containing elements which are in either this set or the other set, but not in both.

Description

In mathematical notation, symmetric difference is defined as:

A⊖B=(A∖B)∪(B∖A)A\ominus B = (A\setminus B)\cup(B\setminus A)

And using Venn diagram:

A Venn diagram where two circles overlap. The symmetric difference of A and B is the region contained by either circle but not both.

symmetricDifference() accepts set-like objects as the other parameter. It requires this to be an actual Set instance, because it directly retrieves the underlying data stored in this without invoking any user code. Then, it iterates over other by calling its keys() method, and constructs a new set with all elements in this that are not seen in other, and all elements in other that are not seen in this.

The order of elements in the returned set is first those in this followed by those in other.

Examples

Using symmetricDifference()

The following example computes the symmetric difference between the set of even numbers (<10) and the set of perfect squares (<10). The result is the set of numbers that are either even or a perfect square, but not both.

const evens = new Set([2, 4, 6, 8]);
const squares = new Set([1, 4, 9]);
console.log(evens.symmetricDifference(squares)); // Set(5) { 2, 6, 8, 1, 9 }

Specifications

Specification
ECMAScript® 2027 Language Specification
# sec-set.prototype.symmetricdifference

Browser compatibility

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
symmetricDifference
122
122
127
108
17
122
127
81
17
26.0
122
17
1.0.0
1.42
22.0.0

See also

  • Polyfill of Set.prototype.symmetricDifference in core-js
  • es-shims polyfill of Set.prototype.symmetricDifference
  • Set.prototype.difference()
  • Set.prototype.intersection()
  • Set.prototype.isDisjointFrom()
  • Set.prototype.isSubsetOf()
  • Set.prototype.isSupersetOf()
  • Set.prototype.union()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/symmetricDifference

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API