BLACK FRIDAY

остался 1 день

Скидка 10% и подарок на выбор — при покупке одной программы
При покупке двух программ  — вторая со скидкой 50%

Как оставить в массиве только уникальные значения js

Ответы
Аватар пользователя Ivan Gagarinov
Ivan Gagarinov
01 ноября 2021

Чтобы получить из массива уникальные значения, можно воспользоваться простым алгоритмом:

  1. Инициируем простой массив, в который будем складывать результат
  2. Проходимся по исходному массиву и на каждой итерации проверяем, если в результате еще нет текущего элемента, то добавляем его в результат.

Для реализации можно использовать либо цикл, либо встроенные методы для перебора массива, например reduce:

const items = ['item1', 'item2', 'item1', 'item3', 'item2', 'item4'];
const result = items.reduce((acc, item) => {
  if (acc.includes(item)) {
    return acc; // если значение уже есть, то просто возвращаем аккумулятор
  }
  return [...acc, item]; // добавляем к аккумулятору и возвращаем новый аккумулятор
}, []);
console.log(result); // => ['item1', 'item2', 'item3', 'item4']
Аватар пользователя Виктория Аблаева
Виктория Аблаева
21 октября 2022

Чтобы оставить в массиве только уникальные значения, воспользуемся таким лайфхаком:

const names = ['Karina', 'Ilona', 'Petr', 'Maks', 'Ilona', 'Maks'];
const uniqueNames = new Set(names); // создаём коллекцию уникальных значений
console.log(Array.from(uniqueNames)); // => [ 'Karina', 'Ilona', 'Petr', 'Maks' ]
// преобразуем в массив

Документация:

Set

Аватар пользователя Кирилл Маркеев
Кирилл Маркеев
05 ноября 2022

Чтобы оставить в массиве только уникальные значения, можно воспользоваться методами filter() и indexOf():

const array = [1, 2, 1, 2, 3, 4, 5, 2, 4, 1, 1, 6];

const getUnique = (arr) => {
  return arr.filter((el, ind) => ind === arr.indexOf(el));
};

console.log(getUnique(array)); // => [ 1, 2, 3, 4, 5, 6 ]

Принцип работы заключается в том, что мы сравниваем индекс текущего элемента массива (ind) с индексом первого вхождения этого элемента в массив (arr.indexOf(el)). И если они не равны, то это означает, что вхождение данного элемента в массив является не первым, то есть элемент ранее уже встречался в массиве.

Добавьте ваш ответ

Рекомендуемые курсы

модули
импорты
отладка программы
ошибки
50 часов
Посмотреть
промисы
event loop
обработка ошибок
таймеры
18 часов
Посмотреть
утверждения
jest
матчеры
юнит-тесты
14 часов
Посмотреть