Введение🤩
Set — это набор элементов. Набор может содержать только уникальные элементы. Давайте посмотрим, как создать набор в разделе ниже.
Создание пустого набора
const companies = new Set() console.log(companies) Set(0) {}
Создание набора из массива
const languages = [ 'English', 'Finnish', 'English', 'French', 'Spanish', 'English', 'French', ] const setOfLanguages = new Set(languages) console.log(setOfLanguages) Set(4) {"English", "Finnish", "French", "Spanish"}
Set — это итерируемый объект, и мы можем перебирать каждый элемент.
const languages = [ 'English', 'Finnish', 'English', 'French', 'Spanish', 'English', 'French', ] const setOfLanguages = new Set(languages) for (const language of setOfLanguages) { console.log(language) } English Finnish French Spanish
Добавление элемента в набор
const companies = new Set() // creating an empty set console.log(companies.size) // 0 companies.add('Google') // add element to the set companies.add('Facebook') companies.add('Amazon') companies.add('Oracle') companies.add('Microsoft') console.log(companies.size) // 5 elements in the set console.log(companies) Set(5) {"Google", "Facebook", "Amazon", "Oracle", "Microsoft"}
Мы также можем использовать цикл для добавления элемента в набор.
const companies = ['Google', 'Facebook', 'Amazon', 'Oracle', 'Microsoft'] setOfCompanies = new Set() for (const company of companies) { setOfCompanies.add(company) } Set(5) {"Google", "Facebook", "Amazon", "Oracle", "Microsoft"}
Удаление элемента набора
Мы можем удалить элемент из набора, используя метод удаления.
console.log(companies.delete('Google')) console.log(companies.size) // 4 elements left in the set
Проверка элемента в наборе
Метод has может помочь узнать, существует ли определенный элемент в наборе.
console.log(companies.has('Apple')) // false console.log(companies.has('Facebook')) // true
Очистка набора
Он удаляет все элементы из множества.
companies.clear() console.log(companies) Set(0) {}
См. пример ниже, чтобы узнать, как использовать set.
const languages = [ 'English', 'Finnish', 'English', 'French', 'Spanish', 'English', 'French', ] const langSet = new Set(languages) console.log(langSet) // Set(4) {"English", "Finnish", "French", "Spanish"} console.log(langSet.size) // 4 const counts = [] const count = {} for (const l of langSet) { const filteredLang = languages.filter((lng) => lng === l) console.log(filteredLang) // ["English", "English", "English"] counts.push({ lang: l, count: filteredLang.length }) } console.log(counts) [ { lang: 'English', count: 3 }, { lang: 'Finnish', count: 1 }, { lang: 'French', count: 2 }, { lang: 'Spanish', count: 1 }, ]
Другой вариант использования set. Например, для подсчета уникальных элементов в массиве.
const numbers = [5, 3, 2, 5, 5, 9, 4, 5] const setOfNumbers = new Set(numbers) console.log(setOfNumbers) Set(5) {5, 3, 2, 9, 4}
Союз наборов
Чтобы найти объединение двух множеств, можно использовать оператор распространения. Найдем объединение множества A и множества B (A U B)
let a = [1, 2, 3, 4, 5] let b = [3, 4, 5, 6] let c = [...a, ...b] let A = new Set(a) let B = new Set(b) let C = new Set(c) console.log(C) Set(6) {1, 2, 3, 4, 5,6}
Пересечение множеств
Найти пересечение двух множеств можно с помощью фильтра. Найдем пересечение множества A и множества B (A ∩ B)
let a = [1, 2, 3, 4, 5] let b = [3, 4, 5, 6] let A = new Set(a) let B = new Set(b) let c = a.filter((num) => B.has(num)) let C = new Set(c) console.log(C) Set(3) {3, 4, 5}
Отличие наборов
Найти разницу между двумя наборами можно с помощью фильтра. Найдем разность множества A и множества B (A \ B)
let a = [1, 2, 3, 4, 5] let b = [3, 4, 5, 6] let A = new Set(a) let B = new Set(b) let c = a.filter((num) => !B.has(num)) let C = new Set(c) console.log(C) Set(2) {1, 2}