Кратко
СкопированоМетод symmetric сравнивает текущую коллекцию с другой и возвращает новую, состоящую из элементов, входящих только в одну из коллекций.
В математике это называется симметрическая разность двух множеств. Она описывается так: симметрическая разность множеств A и B — это множество, которое состоит из элементов, находящихся только в множестве А, либо только в множестве B.
Это можно выразить формулой:
A ⊖ B = ( A \ B ) ∪ ( B \ A)

Пример
СкопированоДва коллекционера винилов The Beatles решили создать перечень уникальных альбомов, встречающихся только в одной из двух коллекций. Нужно сравнить две коллекции и получить список альбомов, встречающихся или только в первой, или только во второй коллекции. В этом им поможет метод symmetric:
const albumList1 = new Set(['White Album', 'Revolver', 'Help!'])const albumList2 = new Set(['Revolver', 'Rubber Soul', 'Help!', 'Abbey Road'])const result = albumList1.symmetricDifference(albumList2)console.log(result)// Set(3) { 'White Album', 'Rubber Soul', 'Abbey Road' }
const albumList1 = new Set(['White Album', 'Revolver', 'Help!'])
const albumList2 = new Set(['Revolver', 'Rubber Soul', 'Help!', 'Abbey Road'])
const result = albumList1.symmetricDifference(albumList2)
console.log(result)
// Set(3) { 'White Album', 'Rubber Soul', 'Abbey Road' }
Как пишется
СкопированоМетод symmetric принимает один обязательный аргумент — объект, содержащий коллекцию для вычисления разности. Если аргумент не указан, будет брошено исключение Type.
Аргументом может быть как Set-объект, так и Set-подобный объект, например, Map.
Метод symmetric возвращает новый Set-объект, содержащий симметрическую разность исходной и указанной коллекций. Порядок элементов будет соответствовать порядку исходной, а затем указанной коллекции.
Как понять
СкопированоМетод symmetric позволяет получить уникальные для двух коллекций элементы без необходимости писать дополнительный код обхода и сравнения.
Поддержка метода symmetric в основных браузерах и в Node.js появилась в 2024 году. Если попробуете использовать метод в более ранних версиях, это приведёт к ошибке.
- Chrome 122, поддерживается
- Edge 122, поддерживается
- Firefox 127, поддерживается
- Safari 17, поддерживается