Как найти одинаковые элементы в массиве js

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

Для нахождения одинаковых элементов можно использовать следующий алгоритм:

  1. Находим количество вхождений для каждого элемента
  2. Выводим только те, у которых количество вхождений больше 1

Воспользуемся встроенными методами для работы с массивами:

const numbers = [4, 3, 3, 1, 15, 7, 4, 19, 19]; // исходный массив

// получаем объект в котором ключ - это элемент массива,
// а значение - количество вхождений
// { '4': 2, '3': 2, '1': 1 ... }
const countItems = numbers.reduce((acc, item) => {
  acc[item] = acc[item] ? acc[item] + 1 : 1; // если элемент уже был, то прибавляем 1, если нет - устанавливаем 1
  return acc;
}, {});

// обрабатываем ключи объекта
const result = Object.keys(countItems).filter((item) => countItems[item] > 1);
console.dir(result); // => ['3', '4', '19']