Поиск одинаковых элементов в массиве на 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 при этом тоже учитываются.

Обзоры по теме:
Комментарии (0)

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