Поиск одинаковых элементов в массиве на Javascript

30.08.2018 / oberset

Эту задачу можно переформулировать по-другому: необходимо отбросить все элементы массива, которые встречаются не больше одного раза. На выходе останутся только повторяющиеся значения. Для решения задачи потребуется перебрать все элементы массива и для каждого элемента попытаться найти ему пару (другой элемент, который равен текущему). Для решения задачи можно написать обход массива в цикле, но у объекта Array уже есть несколько удобных методов, которые нам помогут.

Первый вариант решения задачи с помощью комбинации методов reduce и filter: const exampleArray = [1, 2, 3, 1, 3, 4, 5, 5, 1, '', undefined, undefined, null]; const duplicates = array => array.reduce((list, value) => { if (array.filter( needle => needle === value ).length > 1) { list.push(value); } return list; }, []); console.log(duplicates(exampleArray)); // [1, 3, 1, 3, 5, 5, 1, undefined, undefined]

Второй возможный вариант решения с помощью методов filter и findIndex: const exampleArray = [1, 2, 3, 1, 3, 4, 5, 5, 1, '', undefined, undefined, null]; const duplicates = array => array.filter(value => { const index = array.findIndex( needle => needle === value ); return array.findIndex( (needle, i) => { return needle === value && i !== index; } ) > -1; } ); console.log(duplicates(exampleArray)); // [1, 3, 1, 3, 5, 5, 1, undefined, undefined]

Оба варианта функции принимают исходный массив в качестве параметра и возвращают массив, содержащий только не уникальные элементы. Значения null и undefined при этом тоже учитываются.

Поиск и проверка значений в массиве на Javascript

Примеры поиска значений в массиве с помощью методов find, findIndex, includes, every и других.

Примеры использования Array reduce в Javascript

Метод reduce(callback, initialValue) возвращает результат функции callback, которая применяется к каждому элементу массива.

Как в Javascript получить массив уникальных значений (unique array)?

Несколько наиболее простых вариантов получения массива уникальных(неповторяющихся) значений в Javascript.

Комментарии (0)

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