barbarossa_356
@barbarossa_356
FrontEnd - HTML, CSS, JS

Как убрать дубликаты из массива?

Есть массив: let arr = [ 1, 2, 4, 1, 4, 6, 2, 5 ];. Как сделать так, чтобы все элементы, которые имеют свой дубликат, удалились и на выходе вышел новый массив с элементами, не имеющие дубликата?
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
@VadimFilimonov
const array = [1, 2, 4, 1, 4, 6, 2, 5];

function method1(coll) {
  // так работает Set
  // https://learn.javascript.ru/map-set#set
  return [...new Set(coll)];
}

function method2(coll) {
  return coll.filter((currentItem, index) => {
    // indexOf находит первый попавшийся элемент и возвращает его индекс
    // когда цикл дойдет до 4-го элемента (единицы), то index будет равен 3-м, а indexOf найден единицу на 0-м элементе
    // результат сравнения будет false и элемент в результат не войдет
    return index === coll.indexOf(currentItem);
  });
}

function method3(coll) {
  // из массива создадим объект, т.к. в объекте не может быть двух одинаковых ключей
  const mapping = coll.reduce((accumulator, currentItem) => {
    // даже если значение уже есть - оно перезапишется
    accumulator[currentItem] = currentItem;
    return accumulator;
  }, {});
  // из полученного объекта создаем массив значений
  return Object.values(mapping);
}

console.log(method1(array)); // [1, 2, 4, 6, 5]
console.log(method2(array)); // [1, 2, 4, 6, 5]
console.log(method3(array)); // [1, 2, 4, 6, 5]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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