November 10, 2021

Фильтруем массив по уникальным значениям | JS tasks

Задачу можно решить с помощью разных версий JavaScript, а решения можно применять в ежедневной работе!

Будет полезно, если вы:

  • Собираетесь проходить или проводить собеседования
  • Хотите расширить свои знания в области JavaScript

Задача

Напишите функцию unique(arr) которая возвращает массив, содержащий только уникальные элементы arr

Решение 1


const fruits = [🍋,🥝,🍋,🥝,🍊]

const uniqueArray = (arr) => arr.filter(
    (value, index, filteredArr) => filteredArr.indexOf(value) === index)
)

console.log(uniqueArray(fruits)) // [🍋,🥝,🍊]

Что происходит:

  • Перебираем массив встроенным методом filter
  • Если в filter приходит true возвращаем текущее value
  • Пишем условие при котором проверяем существование элемента среди уже добавленных. Если value уже существует возвращаем false

Таким образом мы перебираем массив, проверяя попадается ли значение среди добавленных, тем самым не позволяя повторным значениями попасть в новый массив

Решение 2


const fruits = [🍋,🥝,🍋,🥝,🍊]

const uniqueArray = (arr) => [...new Set(arr)]

console.log(uniqueArray(fruits)) // [🍋,🥝,🍊]

Что происходит:

  • Используем конструктор создания коллекции new Set
  • Помещаем в него массив не уникальных значений
  • Значения уникальной коллекции возвращаем через spread в новый массив

Так как new Set может содержать только уникальные значения, внутренний геттер фильтрует все повторяющиеся значения за нас


Если вы обнаружили ошибку в тексте статьи, пожалуйста, напишите об этом в комментариях. Спасибо 🙂