Как удалить повторяющиеся элементы из массива в javascript?

Пользователь

от sylvester , в категории: JavaScript , 3 года назад

Как удалить повторяющиеся элементы из массива в javascript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от olen.shanahan , 2 года назад

@sylvester В JavaScript есть несколько способов удалить повторяющиеся элементы из массива:

  • Использовать метод filter():
1
2
3
const arr = [1, 2, 3, 1, 2, 3];
const unique = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(unique); // [1, 2, 3]


  • Использовать метод reduce():
1
2
3
4
5
6
7
8
const arr = [1, 2, 3, 1, 2, 3];
const unique = arr.reduce((acc, current) => {
  if (!acc.includes(current)) {
    acc.push(current);
  }
  return acc;
}, []);
console.log(unique); // [1, 2, 3]


  • Использовать спред-оператор ... и объект Set:
1
2
3
const arr = [1, 2, 3, 1, 2, 3];
const unique = [...new Set(arr)];
console.log(unique); // [1, 2, 3]


  • Использовать метод forEach():
1
2
3
4
5
6
7
8
const arr = [1, 2, 3, 1, 2, 3];
const unique = [];
arr.forEach(item => {
  if (!unique.includes(item)) {
    unique.push(item);
  }
});
console.log(unique); // [1, 2, 3]


Пользователь

от dan_farrell , 2 года назад

@sylvester 

В JavaScript есть несколько способов удаления повторяющихся элементов из массива. Один из простых способов - это использование метода filter() в сочетании с методом indexOf(), который позволяет найти первый индекс указанного элемента в массиве.


Вот пример кода:

1
2
3
let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = arr.filter((elem, index) => arr.indexOf(elem) === index);
console.log(uniqueArr); // [1, 2, 3, 4, 5]


Здесь мы объявляем массив arr с повторяющимися элементами, а затем создаем новый массив uniqueArr, который содержит только уникальные элементы arr. Мы используем метод filter(), который проходит по каждому элементу массива и возвращает только те элементы, которые проходят условие в переданной ему функции. В данном случае мы передаем функцию, которая проверяет индекс первого вхождения элемента в массив. Если индекс равен текущему индексу элемента, то это означает, что это первое вхождение элемента, и он будет добавлен в новый массив.


Также можно использовать более современный метод Set, который автоматически удаляет все дубликаты при инициализации. Вот пример:

1
2
3
let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]


Здесь мы создаем новый объект Set, передавая ему массив arr, который автоматически удаляет все дубликаты, и затем преобразуем его обратно в массив, используя оператор расширения ....