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

Поиск одинаковых элементов в массиве на 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.