Spec-Zone.ru › JavaScript

Set.prototype.difference()

Базовый уровень Новое

Эта функция работает на последних устройствах и версиях браузеров. Эта функция может не работать на старых устройствах или версиях браузеров. Она доступна во всех браузерах с июня 2024 года.

Метод difference() экземпляров Set принимает множество и возвращает новое множество, содержащее элементы из этого множества, но отсутствующие в заданном множестве.

Синтаксис

difference(other)

Параметры

other
Объект Set или объект, похожий на множество.

Возвращаемое значение

Новый объект Set, содержащий элементы из этого множества, но отсутствующие в множестве other.

Описание

В математической нотации разность определяется как:

A∖B={x∊A∣x∉B}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() принимает объекты, похожие на множество, в качестве параметра other. Он требует, чтобы this был реальным экземпляром Set, поскольку он напрямую извлекает внутренние данные, хранящиеся в this, без вызова какого-либо пользовательского кода. Затем его поведение зависит от размеров this и other:

  • Если в this больше элементов, чем в other.size, то он перебирает other, вызывая его метод keys(), и создает новое множество со всеми элементами из this, которые не были обнаружены в other.
  • В противном случае он перебирает элементы в this и создает новое множество со всеми элементами e из this, которые приводят к тому, что other.has(e) возвращает ложное значение.

Порядок элементов в возвращаемом множестве такой же, как и в this.

Примеры

Использование difference()

В следующем примере вычисляется разность между множеством нечетных чисел (<10) и множеством полных квадратов (<10). Результатом является множество нечетных чисел, которые не являются полными квадратами.

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® 2027
# sec-set.prototype.difference

Совместимость с браузерами

Настольный ПК Мобильный Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS Bun Deno Node.js
difference
122
122
127
108
17
122
127
81
17
26.0
122
17
1.0.0
1.42
22.0.0

См. также

  • Polyfill для Set.prototype.difference в core-js
  • Polyfill es-shims для Set.prototype.difference
  • Set.prototype.intersection()
  • Set.prototype.isDisjointFrom()
  • Set.prototype.isSubsetOf()
  • Set.prototype.isSupersetOf()
  • Set.prototype.symmetricDifference()
  • 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/difference

Spec-Zone.ru

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