Благодаря ES2015 получение только уникальных элементов массива в JavaScript стало проще.

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

Благодаря достижениям, внесенным в ES2015 (обновление, формально известное как ES6), теперь мы можем сделать это в одной строке:

Если вы новичок в чудесном мире ES6, здесь много всего происходит. Суть уловки в том, что ES6 предоставляет нам объект Set, который (для всех целей и целей) является уникальным массивом. К счастью для нас, его можно построить из простого старого массива. Следовательно, (new Set(dupArr)) дает нам набор, содержащий все уникальные элементы в массиве dupArr.

Однако Set - это, в общем, Set, а не Array. Это станет очевидным, если вы попытаетесь применить к результату какие-либо полезные встроенные модули сбора (здесь нет .map или .reduce…). Sets итерируемы, что означает, что мы можем использовать оператор распространения (). Проще говоря, оператор распространения означает получить все элементы, содержащиеся в.

Когда в строке 3 мы распространяем Set, мы получаем все элементы, которые он содержит. Строка 3, таким образом, просто создает массив, состоящий из всех элементов в Set, который, как мы теперь знаем, содержит все уникальные элементы исходного массива.

Мы можем пойти немного дальше во втором (бонусном) примере. На этот раз мы складываем .map, чтобы преобразовать массив объектов в массив, состоящий из их id значений. Затем они дедуплицируются так же, как и старый массив.

Для полноты синтаксиса функции карты используются деструктуризация объекта и стрелочные функции (обе функции ES6). Его можно читать следующим образом: из объекта извлеките значение свойства id и сделайте его аргументом для функции с именем id: ({ id }). Стрелка - это сокращение (на самом деле, это более технический, чем это) для функции, которая возвращает единственный аргумент, который она получила, theid.

Простой.