Рубрики
Без рубрики

Поговорим о сетах, детка

Набор в JavaScript – это абстрактный тип данных, который хранит уникальные элементы. Наборы упорядочены, что означает … С меткой JavaScript.

A Установить В JavaScript – это абстрактный тип данных, который хранит уникальные элементы. Наборы упорядочены, а это означает, что они могут быть имерными в порядке, когда они были вставлены.

Строительство

Набор может быть инициализирован без аргументов …

const a = new Set();
console.log(a); // Set {}

… Или же с итерабильный объект

const b = new Set([1, 2, 3, 4, 3, 2, '4']); // Set {1, 2, 3, 4, '4'}
const c = new Set('Mississippi'); // Set {'M', 'i', 's', 'p'}

Несколько вещей, которые нужно помнить:

  • Наш набор C имеет только 4 элемента, потому что наборы не хранят дубликаты.
  • Типы не принуждаются при добавлении значений, поэтому 4 и «4» разные.

Вставка элементов

Чтобы вставить элемент, Установить имеет метод на своем прототипе под названием Добавить Анкет Значение, которое мы хотели бы добавить, передается в метод в качестве аргумента, и обновленный набор возвращается.

const set1 = new Set([1, 2, 3, 4, 5]); // Set {1, 2, 3, 4, 5}
set1.add('hello world'); // Set {1, 2, 3, 4, 5, 'hello world'}
set1.add([true, false]); // Set {1, 2, 3, 4, 5, 'hello world', [true, false]}

Если мы не передаем аргумент в пользу Добавить Метод, неопределенное Вход будет вставлен в набор.

const set2 = new Set(); // Set {}
set1.add(4); // Set {4}
set1.add(); // Set {4, undefined}

С тех пор, как Добавить Метод возвращает обновленный набор, их можно приковать вместе.

const set3 = new Set();
set3
  .add(2) // Set {2}
  .add(4) // Set {2, 4}
  .add(6) // Set {2, 4, 6}
  .add(8); // Set {2, 4, 6, 8}

Удаление элементов

Чтобы удалить элемент из набора, мы используем Удалить метод Мы передаем элемент, который мы хотели бы удалить на метод, и возвращается логическое значение. Если элемент найден в наборе, он будет удален и вернет истинный . Если нет, это вернется ложный Анкет

const set4 = new Set('abcde'); // Set {'a', 'b', 'c', 'd', 'e'}
set4.delete('a'); // true
set4.delete('x'); // false
console.log(set4); // Set {'b', 'c', 'd', 'e'}

Другие методы

У Set есть несколько других методов на своем прототипе, поэтому давайте посмотрим на некоторые из них.

Set.prototype.clear ()

ясно Метод удаляет все записи из данного набора.

const setA = new Set();
setA
  .add(1)
  .add(3)
  .add(5); // Set {1, 3, 5}
setA.clear();
console.log(setA); // Set {}
Set.prototype.has (val)

имеет Метод возвращает логическое значение, утверждая, существует ли принятый аргумент в наборе или нет.

const setB = new Set([true, false, 1, 2, 3]); // Set {true, false, 1, 2, 3}
setB.has(false); // true
setB.has(true); // true
setB.has('a'); // false
Set.prototype.foreach ()

foreach Метод выполняет Функция обратного вызова для каждого значения в наборе.

Функция обеспечивается тремя параметрами: ключ, значение и текущий объект SET. Для наборов ключ и значение будут такими же.

const setC = new Set([1, 2, 3]);
const printValue = (key, val, self) => {
  console.log(key, val);
};
setC.forEach(printValue);
// 1 1
// 2 2
// 3 3

Удаление дубликатов из массива с набором

Были времена, когда я хотел удалить дубликаты из массива. Моя первоначальная реализация состояла в том, чтобы использовать фильтр Анкет В этом решении я называю Indexof Метод массива на каждом значении. Если Indexof Не возвращает текущий индекс, значение будет отфильтрован.

const array = [1, 2, 3, 1, 1, 1];
const filteredArray = array.filter((value, index) => {
  return array.indexOf(value) === index;
});
console.log(filteredArray); // [1, 2, 3]

Но … поскольку наборы не хранят дублирующиеся значения, мы можем использовать эту функциональность. Давайте передадим массив в качестве аргумента нашему набору конструктору.

const mySet = new Set(array); // Set {1, 2, 3}

Теперь у нас есть набор с различными значениями. Используя Распространение оператора , мы можем расширить наши установленные значения и хранить их в новом массиве.

const filteredArr = [...mySet];
console.log(filteredArr); // [1, 2, 3]

И вуаля … массив удален из его дубликатов.

Эта статья только царапает поверхность того, что мы можем сделать с наборами, но это должно создать хорошую основу. Я не могу дождаться, чтобы увидеть, что вы строите.

Оригинал: “https://dev.to/khalalw/let-s-talk-about-sets-baby-k79”