Проверить, есть ли в массиве дубликаты

Поиск дубликатов в массиве с помощью javaScript

В этой статье мы рассмотрим различные методы поиска дубликатов в массиве. Некоторые из этих методов подсчитывают только количество дублирующихся элементов, в то время как другие также сообщают нам, какой элемент повторяется, а некоторые делают и то, и другое. Соответственно, вы можете выбрать лучший вариант для вашего варианта использования.
const hasDuplicates = arr => new Set(arr).size !== arr.length;
hasDuplicates([0, 1, 1, 2]); // true
hasDuplicates([0, 1, 2, 3]); // false

Использование метода indexOf()

В этом методе мы сравниваем индекс всех элементов массива с индексом первого появления этого числа. Если они не совпадают, это означает, что элемент является дубликатом. Все такие элементы возвращаются в отдельный массив с помощью метода filter(). Давайте посмотрим на реализацию этого с помощью JavaScript
const arry = [1, 2, 1, 3, 4, 3, 5];

const toFindDuplicates = arry => arry.filter((item, index) => arr.indexOf(item) !== index)
const duplicateElementa = tofindDuplicates(arry);
console.log(duplicateElements);

// Output: [1, 3]

Использование метода has()

В приведенной выше реализации выходной массив может иметь дубликаты элементов, если элементы встречались более двух раз в массиве. Чтобы избежать этого и подсчитать количество дублированных элементов, мы можем использовать метод use().
function toFindDuplicates(arry) {
    const uniqueElements = new Set(arry);
    const filteredElements = arry.filter(item => {
        if (uniqueElements.has(item)) {
            uniqueElements.delete(item);
        } else {
            return item;
        }
    });

    return […new Set(uniqueElements)]
}

const arry = [1, 2, 1, 3, 4, 3, 5];
const duplicateElements = toFindDuplicates(arry);
console.log(duplicateElements);

// Output: [1, 3]

Использование пар объект и ключ-значение

В JavaScript объект состоит из пар ключ-значение, где ключи похожи на индексы в массиве и уникальны. Если попытаться добавить дубликат ключа с другим значением, предыдущее значение для этого ключа перезаписывается новым значением. Мы используем эту концепцию для сравнения и поиска дубликатов.
toFindDuplicates();

function toFindDuplicates() {
    let arry = [1, 2, 1, 3, 4, 3, 5];
    let toMap = {};
    let resultToReturn = false;
    for (let i = 0; i < arry.length; i++) {

        if (toMap[arry[i]]) {
            resultToReturn = true;
            // terminate the loop
            break;
        }

        toMap[arr[i]] = true;
    }

    if (resultToReturn) {
        console.log('Duplicate elements exist'
            ');
        }
        else {
            console.log('Duplicates don'
                t exist ');
            }
        }

Использование функции "some"

В JavaScript функция "some" проверяет условие для всех элементов массива и возвращает значение true, если какой-либо из элементов массива удовлетворяет этому условию. В функции обратного вызова аргумента мы получаем текущий элемент массива в качестве первого аргумента и индекс текущего элемента в качестве второго аргумента. Затем мы можем сравнить индекс текущего элемента с индексом первого элемента с тем же значением. Если оба индекса одинаковы, это означает, что дублирующих элементов нет.
toFindDuplicates();

function toFindDuplicates() {
    let arry = [1, 2, 1, 3, 4, 3, 5];
    let resultToReturn = false;
    // call some function with callback function as argument
    resultToReturn = arry.some((element, index) => {
        return arry.indexOf(element) !== index
    });
    if (resultToReturn) {
        console.log('Duplicate elements exist'
            ');
        }
        else {
            console.log('Duplicates don'
                t exist ');
            }
        }

Использование итерации

В этом методе мы сравниваем каждый элемент массива со всеми другими элементами массива, чтобы проверить, совпадают ли значения двух элементов, используя вложенный цикл for.
toFindDuplicates();

function toFindDuplicates(element, index) {
    let arry = [1, 2, 1, 3, 4, 3, 5];
    let resultToReturn = false;
    for (let i = 0; i < arry.length; i++) { // nested for loop
        for (let j = 0; j < arry.length; j++) {
            // prevents the element from comparing with itself
            if (i !== j) {
                // check if elements' values are equal
                if (arry[i] === arry[j]) {
                    // duplicate element present
                    resultToReturn = true;
                    // terminate inner loop
                    break;
                }
            }
        }
        // terminate outer loop
        if (resultToReturn) {
            break;
        }
    }
    f(resultToReturn) {
            console.log('Duplicate elements exist'
                ');
            }
            else {
                console.log('Duplicates don'
                    t exist ');
                }
            }
Массивы и объекты JavaScript JavaScript