Массивы — это фундаментальная структура данных в 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, вы теперь у вас есть целый ряд методов, из которых можно выбирать в зависимости от вашего конкретного случая использования. Не забудьте проанализировать требования и ограничения ваших проектов, прежде чем решить, какой метод использовать. Приятного кодирования!