Set.prototype.symmetricDifference()

基线 2024

新可用

2024 年 6 月起,此功能可在最新的设备和浏览器版本中使用。此功能可能无法在较旧的设备或浏览器中使用。

symmetricDifference()Set 实例的一种方法,它接受一个集合并返回一个新集合,该新集合包含存在于此集合或给定集合中,但不存在于两者中的元素。

语法

js
symmetricDifference(other)

参数

other

一个 Set 对象,或 类似集合 的对象。

返回值

一个新的 Set 对象,包含存在于此集合或 other 集合中,但不存在于两者中的元素。

描述

在数学符号中,对称差定义为

A B = ( A B ) ( B A ) A\ominus B = (A\setminus B)\cup(B\setminus A)

并使用韦恩图

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() 接受 类似集合 的对象作为 other 参数。它要求 this 为实际的 Set 实例,因为它直接检索存储在 this 中的基础数据,而无需调用任何用户代码。然后,它通过调用其 keys() 方法迭代 other,并使用 this 中所有未在 other 中看到的元素以及 other 中所有未在 this 中看到的元素构造一个新集合。

返回集合中元素的顺序首先是 this 中的元素,然后是 other 中的元素。

示例

使用 symmetricDifference()

以下示例计算偶数集合(<10)和完全平方数集合(<10)之间的对称差。结果是偶数或完全平方数,但不是两者兼而有之的数字的集合。

js
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 }

规范

规范
Set 方法
# sec-set.prototype.symmetricdifference

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅