@asmodeus13th

Как очистить массив от повторяющихся элементов?

Суть вопроса. Написать функцию, которая принимает массив и возвращает массив с элементами, которые не повторялись. Массив может состоять из чисел, строк и логических типов. Скорость работы функции должна быть не более О(n).
Результат. Передаю в функцию [2, 5, 8, 2, true, 5, 2] и получаю [8, true].
  • Вопрос задан
  • 242 просмотра
Решения вопроса 1
@asmodeus13th Автор вопроса
Хочу показать пример выполнения задания. Скорость функции О(nn), так как на каждый элемент в цикле приходится ещё один цикл.
function uniqueArr(arr){
  /**
   * Принимает массив и возвращает его уникальные значения.
   */

  const accumulate = [];  // сохраняет уникальные значения

  for (let foo of arr){
    let count = 0; // счётчик для повторяющихся элементов

    for (let bar of arr){
      if (foo === bar) count++; // кол-во повторяющихся элементов
    }

    if (count === 1){
      // если значение в массиве только одно,
      // добавляет это значение в конечный массив
      accumulate.push(foo);
    }
  }

  return accumulate
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F Куратор тега JavaScript
Array
  .from(arr.reduce((acc, n) => acc.set(n, (acc.get(n) ?? 0) + 1), new Map))
  .filter(n => n[1] === 1)
  .map(n => n[0])
Ответ написан
aloky
@aloky
js
new Set?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы