Set.prototype.difference()

Baseline 2024
新推出

自 2024 年 6 月起,此功能已在最新的裝置和瀏覽器版本中可用。此功能可能不適用於較舊的裝置或瀏覽器。

difference() 方法是 Set 例項的一個方法,它接收一個集合作為引數,並返回一個新集合,其中包含當前集合中存在但不在給定集合中的元素。

語法

js
difference(other)

引數

其他

一個 Set 物件,或 類 Set 物件

返回值

一個包含當前集合中存在但不在 other 集合中的元素的新 Set 物件。

描述

在數學表示法中,差集 定義為

AB={xAxB}A\setminus B = \{x\in A\mid x\notin B\}

使用維恩圖表示:

A Venn diagram where two circles overlap. The difference of A and B is the part of A that is not overlapping B.

difference() 方法接受 類集合(set-like) 物件作為 other 引數。它要求 this 是一個實際的 Set 例項,因為它直接檢索 this 中儲存的底層資料,而不呼叫任何使用者程式碼。然後,其行為取決於 thisother 的大小。

  • 如果 this 中的元素多於 other.size,則它透過呼叫 keys() 方法迭代 other,並使用 this 中所有未在 other 中出現的元素構造一個新集合。
  • 否則,它會迭代 this 中的元素,並使用 this 中所有導致 other.has(e) 返回 假值(falsy) 的元素 e 來構造一個新集合。

返回集合中元素的順序與 this 中一致。

示例

使用 difference()

以下示例計算小於 10 的奇數集合與小於 10 的完全平方數集合的差集。結果是那些不是完全平方數的奇數集合。

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

規範

規範
ECMAScript® 2026 語言規範
# sec-set.prototype.difference

瀏覽器相容性

另見