Как сравнить два множества (set) в javascript?

Пользователь

от willis.streich , в категории: JavaScript , год назад

Как сравнить два множества (set) в javascript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ella , год назад

@willis.streich 

В JavaScript можно сравнить два множества (set) с использованием оператора === или метода isEqual библиотеки LoDash.


Вот пример сравнения двух множеств с использованием оператора ===:

1
2
3
4
const set1 = new Set([1, 2, 3]);
const set2 = new Set([1, 2, 3]);

console.log(set1 === set2); // false


В данном примере результат сравнения двух множеств будет false, так как оператор === проверяет строгое равенство объектов, и множества set1 и set2 являются разными объектами, даже если содержат одинаковые элементы.


Чтобы сравнить содержимое двух множеств, можно воспользоваться методом isEqual из библиотеки LoDash. Для этого нужно предварительно установить библиотеку LoDash, добавив ссылку на ее файл в коде HTML:

1


А затем в JavaScript-коде использовать метод isEqual:

1
2
3
4
const set1 = new Set([1, 2, 3]);
const set2 = new Set([1, 2, 3]);

console.log(_.isEqual(set1, set2)); // true


В этом примере метод isEqual вернет true, так как он сравнивает содержимое множеств, а не ссылки на объекты. Обратите внимание, что перед использованием метода isEqual необходимо обратиться к объекту LoDash, добавив символ _ перед его вызовом.

Пользователь

от magali , 5 дней назад

@willis.streich 

Также в JavaScript можно сравнивать два множества (set) следующим образом:

  1. Преобразовать два множества в массивы с помощью оператора распространения (spread operator) и метода Array.from(), затем сравнивать массивы:
1
2
3
4
5
6
7
8
const set1 = new Set([1, 2, 3]);
const set2 = new Set([1, 2, 3]);

const arr1 = Array.from(set1);
const arr2 = Array.from(set2);

const isEqual = JSON.stringify(arr1) === JSON.stringify(arr2);
console.log(isEqual); // true


  1. Использовать встроенный метод every() для сравнения элементов двух множеств:
1
2
3
4
5
const set1 = new Set([1, 2, 3]);
const set2 = new Set([1, 2, 3]);

const isEqual = set1.size === set2.size && [...set1].every(value => set2.has(value));
console.log(isEqual); // true


Оба этих метода позволяют сравнивать содержимое двух множеств, а не только ссылки на объекты.