hellojs.ru
Главная - Дополнительные основы JavaScript - Set

Set

Размещено в категории "Дополнительные основы JavaScript"
28.10.2024 / просмотров: 38 / комментариев: 0
Ресурсы:

find()
Документация




Set - это особый вид коллекций(массив), где каждое значение может встречаться лишь однажды.

Например, есть массив с числами:

Код

const arr = [1, 1, 2, 2, 4, 5, 6, 5];

Сформируем из этого массива новый сет:

Код

const set = new Set(arr);

console.log(set);

Выведем его в консоль:

Цитата

Set(5) { 1, 2, 4, 5, 6 }

Как видим, дубли цифр исчезли, со строками работает аналогично:

Код

const arr = ['Alex', 'Ann', 'Olga', 'Alex'];
const set = new Set(arr);

console.log(set);

Цитата

Set(3) { 'Alex', 'Ann', 'Olga' }


Методы для Set



Метод add()

Код

const arr = ['Alex', 'Ann', 'Olga', 'Alex'];
const set = new Set(arr);

set.add('Ivan');
set.add('Alex');

console.log(set);

Несмотря на то, что мы попытались добавить еще одну строку 'Alex', которая была убрана при формировании сета, в консоли мы видим, что такая строка по-прежнему одна:

Цитата

Set(4) { 'Alex', 'Ann', 'Olga', 'Ivan' }

Метод add() в результате своей работы возвращает сам набор, поэтому можно использовать цепочку:

Код

set.add('Ivan')
  .add('Markus');

set.delete(value) - удалить что-то из набора

set.has(value) - проверить на наличие какого-то элемента в наборе (вернёт либо true, либо false)

set.clear() - полностью очистить набор

set.size - свойство возвращает размер набора

Перебор для Set



Запускаем for...of

Код

const arr = ['Alex', 'Ann', 'Oleg', 'Alex']; // начальный массив

const set = new Set(arr); // формируем из него сет, убираются дубли

set.add('Ivan').add('Ann'); // добавляем новые элементы, дубль игнорируется

for (let value of set) {
  console.log(value);
}

Цитата

Alex
Ann
Oleg
Ivan

Второй вариант с помощью forEach()

Код

set.forEach((value, valueAgaing, set) => {
  console.log(value, valueAgaing);
})

Цитата

Alex Alex
Ann Ann
Oleg Oleg
Ivan Ivan

Второй аргумент valueAgaing добавлен для совместимости, поскольку в изначальном массиве нет ключей, а только значения.

Цитата

Объект Set - это особый вид коллекции, "множество" значений (без ключей), где каждое значение уникально(может встречаться в коллекции лишь один раз).

Метод set.values() возвращает новый итератор, который содержит значения для каждого элемента в объекте set в порядке их добавления.

Пример:

Код

console.log(set.values());

Получаем:

Цитата

[Set Iterator] { 'Alex', 'Ann', 'Oleg', 'Ivan' }

Методы set.keys() и set.entries() используются для обратной совместимости с [i]Map[/i]

Функция-помощник для фильтрации любого массива



Код

function unique(arr) {
  return new Set(arr);
}

Из возвращаемого набора Set мы можем сформировать самый обычный массив со всеми доступными ему методами

Код

function unique(arr) {
  return Array.from(new Set(arr));
}

Массив передаётся в создаваемый Set, в нём мы избавляемся от дублей и потом обратно формируется массив с уникальными значениями, массив возвращается функцией

Код

console.log(unique(arr));

Цитата

['Alex', 'Ann', 'Oleg', 'Ivan']
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
Сайт управляется системой uCoz