JavaScript виконання коду JavaScript підключення зовнішнього файлу JavaScript console.log JavaScript змінні і константи JavaScript типи даних JavaScript операції зі змінними JavaScript перетворення даних JavaScript масиви JavaScript умовні конструкції JavaScript цикли JavaScript функції JavaScript область видимості змінних JavaScript замикання і функції IIFE JavaScript Паттерн Модуль JavaScript рекурсивні функції JavaScript перевизначення функцій JavaScript hoisting JavaScript передача параметрів за значенням і за посиланням JavaScript стрілочні функції JavaScript ООП Object JavaScript ООП вкладені об'єкти і масиви в об'єктах JavaScript ООП перевірка наявності і перебір методів і властивостей JavaScript ООП об'єкти у функціях JavaScript ООП конструктори об'єктів JavaScript ООП розширення об'єктів. prototype JavaScript ООП інкапсуляція JavaScript ООП Функція як об'єкт. Методи call і apply JavaScript ООП спадкування JavaScript ООП Ключове слово this JavaScript ООП Object destructuring JavaScript ООП класи JavaScript ООП Date. Робота з датами JavaScript Об'єкт Math. математичні операції JavaScript Об'єкт Array. Робота з масивами JavaScript ООП об'єкт Number JavaScript String JavaScript String Об'єкт RegExp. Регулярні вирази JavaScript String Регулярні вирази в методах String JavaScript String Синтаксис регулярних виразів JavaScript Робота з браузером і BOM JavaScript діалогові вікна JavaScript Історія браузера. об'єкт history JavaScript об'єкт location JavaScript об'єкт navigator JavaScript таймери JavaScript DOM Введення JavaScript DOM Об'єкт document. Пошук елементів JavaScript DOM Властивості об'єкта document JavaScript DOM Об'єкт Node. Навігація по DOM JavaScript DOM Створення, додавання і видалення елементів веб-сторінки JavaScript DOM Об'єкт Element. управління елементами JavaScript DOM Зміна стилю елементів JavaScript події. Введення в обробку подій. JavaScript події обробники JavaScript події. об'єкт Event JavaScript події. поширення подій JavaScript події миші JavaScript події клавіатури JavaScript FORMS. Форми і їх елементи JavaScript FORMS. Кнопки JavaScript FORMS. текстові поля JavaScript FORMS. Прапорці та перемикачі JavaScript FORMS. Список select JavaScript JSON JavaScript зберігання даних. cookie JavaScript зберігання даних. Web Storage JavaScript Collection. Ітератори JavaScript Collection. Генератори JavaScript Collection. Множина Set JavaScript Collection. Map JavaScript Collection. WeakSet і WeakMap JavaScript AJAX. XMLHttpRequest JavaScript AJAX. Відправка даних JavaScript AJAX. Promise в Ajax-запитах

JavaScript Collection. Множина Set


множина Set

Множини ( sets ) представляють структуру даних, яка може зберігати тільки унікальні значення. В JavaScript функціонал множин визначає об'єкт Set . Для створення множин застосовується конструктор цього об'єкту:

let mySet = new Set();

Також можна передати в конструктор масив значень, якими буде ініціалізувати множину:

let arr = [1, 1, 2, 3, 4, 5, 2, 4];

let numbers = new Set(arr);
console.log(numbers);           // Set(5) {1, 2, 3, 4, 5}

В даному випадку в множину передаються дані з масиву. Однак оскільки множина може зберігати тільки унікальні значення, то при її створенні повторювані значення, які є в масиві, видаляються.

Для перевірки кількості елементів можна використовувати властивість size .

let arr = [1, 1, 2, 3, 4, 5, 2, 4];
let numbers = new Set(arr);
console.log(numbers.size);      // 5

Додавання

Для додавання застосовується метод add () . Його результатом є змінена множина:

let numbers = new Set();
numbers.add(1);
numbers.add(3);
numbers.add(5);
numbers.add(3);     // не додається
numbers.add(1);     // не додається
console.log(numbers);       // Set(3) {1, 3, 5}

При цьому, оскільки множина зберігає тільки унікальні значення, то додавання елементів, які вже в ній є, не має сенсу.

Так як метод add повертає посилання на множину, то ми можемо викликати методи по ланцюжку:

let numbers = new Set();
numbers.add(1).add(3).add(5);

console.log(numbers);       // Set(3) {1, 3, 5}

видалення

Для видалення елементів застосовується метод delete () :

let numbers = new Set();
numbers.add(1).add(3).add(5);
numbers.delete(3);
console.log(numbers);       // Set(2) {1, 5}

Причому даний метод повертає логічне значення: true - якщо елемент вилучений і false - якщо видалення не відбулося (наприклад, видалення елемента якого немає в множині):

let numbers = new Set();
numbers.add(1).add(3).add(5);
 
let isDeleted = numbers.delete(3);
console.log(isDeleted);         // true

isDeleted = numbers.delete(54);
console.log(isDeleted);         // false

Якщо ви хочете видалити всі елементи з множини, то застосовується метод clear () :

let numbers = new Set();
numbers.add(1).add(3).add(5);

numbers.clear();
console.log(numbers);           // Set(0) {}

Перевірка наявності елемента

Якщо потрібно перевірити, чи є елемент в множині, то використовується метод has () . Якщо елемент є, то метод повертає true , інакше повертає false :

let numbers = new Set();
numbers.add(1).add(3).add(5);
console.log(numbers.has(3));    // true
console.log(numbers.has(32));   // false

перебір безлічі

Для перебору елементів множини застосовується метод forEach () :

let arr = [1, 2, 3, 5];
let numbers = new Set(arr);
 
numbers.forEach(function(value1, value2, set){
    console.log(value1);
})

Для сумісності з масивами, які теж мають метод forEach , в даний метод передається функція зворотного виклику, яка приймає три параметри. Безпосередньо для множини перший і другий параметри представляють поточний перебираючий елемент, а третій параметр - перебираюча множина.

Також для перебору множини можна використовувати цикл for...of :

let numbers = new Set([1, 2, 3, 5]);
 
for(n of numbers){
    console.log(n);
}

Наш партнер:
beta test mp3 playlist downloader