Раскрытие возможностей массивов: руководство по поиску повторяющихся значений в JavaScript

Массивы — это фундаментальная структура данных в JavaScript, позволяющая хранить коллекции значений и манипулировать ими. Наше сегодняшнее путешествие — изучить различные методы идентификации и извлечения неуникальных значений, также известных как дубликаты, из массива. К концу этой статьи в вашем распоряжении будет набор методов для решения этой распространенной проблемы программирования.

Метод 1: использование вложенного цикла
Самый простой подход — использовать вложенный цикл для перебора каждого элемента массива и сравнения его с каждым другим элементом. Когда дубликат найден, мы добавляем его в отдельный массив или структуру данных. Вот пример:

function findDuplicates(array) {
  let duplicates = [];
  for (let i = 0; i < array.length; i++) {
    for (let j = i + 1; j < array.length; j++) {
      if (array[i] === array[j] && !duplicates.includes(array[i])) {
        duplicates.push(array[i]);
      }
    }
  }
  return duplicates;
}
const myArray = [1, 2, 3, 4, 2, 5, 6, 3, 7];
console.log(findDuplicates(myArray)); // Output: [2, 3]

Метод 2: использование функций Filter и IndexOf
Другой подход предполагает использование функции filterв сочетании с функцией indexOf. Функция filterсоздает новый массив, отфильтровывая элементы, соответствующие определенному условию. В этом случае мы проверяем, не равен ли индекс элемента индексу его первого вхождения.

function findDuplicates(array) {
  return array.filter((value, index) => array.indexOf(value) !== index);
}
const myArray = [1, 2, 3, 4, 2, 5, 6, 3, 7];
console.log(findDuplicates(myArray)); // Output: [2, 3]

Метод 3: использование функции сокращения
Функция reduceтакже может использоваться для поиска дубликатов. Мы накапливаем уникальные значения в объекте и всякий раз, когда встречается дубликат, добавляем его в наш массив результатов.

function findDuplicates(array) {
  return Object.entries(
    array.reduce((acc, value) => {
      acc[value] = (acc[value] || 0) + 1;
      return acc;
    }, {})
  )
    .filter(([key, count]) => count > 1)
    .map(([key]) => key);
}
const myArray = [1, 2, 3, 4, 2, 5, 6, 3, 7];
console.log(findDuplicates(myArray)); // Output: [2, 3]

Метод 4: использование структуры данных Set
В JavaScript структура данных Setхранит только уникальные значения. Воспользовавшись этим свойством, мы можем находить дубликаты, сравнивая размер исходного массива с размером созданного из него Set.

function findDuplicates(array) {
  const uniqueValues = new Set(array);
  return array.filter((value) => !uniqueValues.delete(value));
}
const myArray = [1, 2, 3, 4, 2, 5, 6, 3, 7];
console.log(findDuplicates(myArray)); // Output: [2, 3]

В этой статье мы рассмотрели несколько методов поиска повторяющихся значений в массивах JavaScript. Используя вложенные циклы, функции filterи indexOf, функцию reduceи структуру данных Set, вы теперь у вас есть целый ряд методов, из которых можно выбирать в зависимости от вашего конкретного случая использования. Не забудьте проанализировать требования и ограничения ваших проектов, прежде чем решить, какой метод использовать. Приятного кодирования!