Set.prototype.intersection()

基线 2024

新可用

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

intersection() 方法是 Set 实例的方法,它接受一个集合并返回一个新的集合,该集合包含此集合和给定集合中的元素。

语法

js
intersection(other)

参数

other

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

返回值

一个新的 Set 对象,包含此集合和 other 集合中的元素。

描述

在数学符号中,交集 被定义为

A B = { x A x B } A\cap B = \{x\in A\mid x\in B\}

并使用维恩图

A Venn diagram where two circles overlap. The intersection of A and B is the part where they overlap.

intersection() 接受 类似集合 的对象作为 other 参数。它要求 this 是一个实际的 Set 实例,因为它直接检索存储在 this 中的底层数据,而不会调用任何用户代码。然后,它的行为取决于 thisother 的大小。

  • 如果 this 中的元素比 other.size 多,则它会通过调用 otherkeys() 方法来迭代 other,并使用所有产生的同时也在 this 中存在的元素构造一个新的集合。
  • 否则,它会迭代 this 中的元素,并使用 this 中所有导致 other.has(e) 返回 真值 的元素 e 构造一个新的集合。

由于此实现,intersection() 的效率主要取决于 thisother 之间较小集合的大小(假设集合可以在亚线性时间内访问)。返回的集合中元素的顺序与 thisother 中较小的集合的顺序相同。

示例

使用 intersection()

以下示例计算奇数集合 (<10) 和完全平方数集合 (<10) 之间的交集。结果是奇数且为完全平方数的集合。

js
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.intersection(squares)); // Set(2) { 1, 9 }

规范

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

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参见