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

Как создать массив уникальных значений в JavaScript с помощью наборов

Как удалить все дублированные значения из массива в JavaScript с помощью объекта заданного данных, представленного в ES6. Помечено JavaScript, WebDev.

TL; доктор

let uniqueArray = [...new Set([5,5,2,2,2,4,2])];
// [5,2,4]

Простите?

Извините за титул многолетнего – иногда вещи можно лучше объяснить с примером кода.

Представьте себе, что у вас есть массив JavaScript, который содержит много элементов, некоторые из которых дублируются:

let dupeArray = [1,1,4,5,4,4,2,1,5];

Ваша цель – удалить дубликаты и оставить только одну запись за значение:

let uniqueArray = [1,4,5,2];

Вы можете написать для петли или использовать карта или Фильтр Чтобы получить этот результат. Существует миллион различных способов решать проблему в компьютерном программировании (что это так весело!). ES6 вводит кучу новых функций, в том числе наборов, которые мы также можем использовать для решения этой проблемы в одной строке кода.

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

Что такое набор?

Набор – это новая структура данных, представленная в ES6. Цитируя напрямую из MDN :

Установленные объекты – это коллекции значений. Вы можете потерять элементы набора в порядке вставки. Значение в наборе может происходить только один раз; Это уникально в коллекции набора.

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

Давайте создадим набор, добавьте некоторые значения к нему и запрашивайте размер. (Вы можете следовать в консоли инструментов разработчиков современного браузера):

let mySet = new Set().add(1).add(3).add(2).add(1);
// Set(3) {1, 3, 2}
mySet.size
// 3

Обратите внимание, как финал 1 не было добавлено, а размер набора остался в 3 вместо 4. В массиве это было бы добавлено, а длина будет 4.

Есть два способа добавления значений на набор. Во-первых, используя Добавить метод, как указано выше. Во-вторых, передав массив к конструктору ( Новый набор () ):

let arraySet1 = new Set([3,2,1]);
// Set(3) {3, 2, 1}

Дублированные значения также удаляются, если они включены в начальный массив:

let arraySet2 = new Set([8,8,9,2]);
// Set(3) {8,9,2}
arraySet2.size;
// 3

Вы, вероятно, можете увидеть, где это происходит. Все, что осталось сделать, это конвертировать этот набор в массив, и мы достигли нашей оригинальной цели. Есть два способа сделать это: как с использованием методов ES6.

Array.from ()

Array.rom Метод создает новый массив из массивной структуры:

let dupeArray = [3,2,3,3,5,2];
let uniqueArray = Array.from(new Set(dupeArray));

Распространение оператора …

Эти три точки повсеместно повсеместно в ES6. Они обрезают везде и имеют несколько целей (и они правая боль в Google). Когда мы используем их как Распространение оператора Их можно использовать для создания массива:

let uniqueArray = [...new Set(dupeArray)];

Какой из этих двух методов вы должны использовать? Синтаксис распространения выглядит круто, но Array.rom более явно в его целях и проще читать. Они оба выполняют то же самое здесь, поэтому выбор твой!

Заключение

Что-то, что потребовало бы много линий кода и переменных теперь, теперь может быть выполнено в однопрочее в ES6. Какое время быть живым.

let uniqueArray = [...new Set([5,5,2,4,2])];
// [5,2,4]

Оригинал: “https://dev.to/clairecodes/how-to-create-an-array-of-unique-values-in-javascript-using-sets-5dg6”