Кратко
СкопированоМетод difference
сравнивает текущую коллекцию с другой и возвращает новую, состоящую из элементов, входящих только в первую коллекцию.
В математике это называется разность двух множеств и описывается так: разность множеств A и B – это множество, в которое входят все элементы множества A, не входящие в множество B.
Это можно выразить формулой:
A \ B = { x ∈ A | x ∉ B }
![Разность двух множеств](images/set-difference-300w.png)
Пример
СкопированоДопустим, у нас есть два списка имён в виде коллекций строк. Необходимо сравнить эти коллекции и получить список имён, встречающихся только в первой коллекции:
const names1 = new Set(['Аглая', 'Настасья', 'Елизавета', 'Соня'])const names2 = new Set(['Лев', 'Родион', 'Настасья'])const diff = names1.difference(names2)console.log(diff)// Set(3) { 'Аглая', 'Елизавета', 'Соня' }
const names1 = new Set(['Аглая', 'Настасья', 'Елизавета', 'Соня']) const names2 = new Set(['Лев', 'Родион', 'Настасья']) const diff = names1.difference(names2) console.log(diff) // Set(3) { 'Аглая', 'Елизавета', 'Соня' }
Как пишется
СкопированоМетод difference
принимает один обязательный аргумент — объект, содержащий коллекцию для вычисления разности. Если аргумент не указан, будет брошено исключение Type
.
Аргументом может быть как Set
-объект, так и Set
-подобный объект, например, Map
.
Метод difference
возвращает новый Set
-объект, содержащий разность исходной и указанной коллекций. Порядок элементов будет соответствовать порядку элементов в исходной коллекции.
Как понять
СкопированоВ случае использования коллекций часто требуется выполнять над ними операции как с математическими множествами. Одна из распространённых операций над множествами — разность двух множеств.
Метод difference
сравнивает и получает разность двух коллекций без необходимости писать дополнительный код обхода коллекций.
Поддержка метода difference
в основных браузерах и в Node.js появилась в 2024 году. Например, если попробовать использовать difference
в Node.js ниже версии v.22.0.0, это приведёт к ошибке:
const painters = new Set(['Леонардо','Микеланджело','Рафаэль'])const turtles = new Set(['Донателло','Рафаэль'])try { console.log(painters.difference(turtles))} catch (err) { console.error('Поймали ошибку! Вот она: ', err.message)}// Поймали ошибку! Вот она: painters.difference is not a function
const painters = new Set(['Леонардо','Микеланджело','Рафаэль']) const turtles = new Set(['Донателло','Рафаэль']) try { console.log(painters.difference(turtles)) } catch (err) { console.error('Поймали ошибку! Вот она: ', err.message) } // Поймали ошибку! Вот она: painters.difference is not a function
- Chrome 122, поддерживается
- Edge 122, поддерживается
- Firefox 127, поддерживается
- Safari 17, поддерживается