@bach1

Как проверить, есть ли в массиве повторяющиеся элементы и как записать эти элементы в новый массив?

Как проверить, есть ли в массиве повторяющиеся элементы и как записать эти элементы в новый массив или оставить только элементы которые повторяются?

let allArr = [1, 3, 4, 7, 13, 1, 2, 4, 13, 15];
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const count = arr.reduce((acc, n) => acc.set(n, (acc.get(n) || 0) + 1), new Map);
const notUnique = [...count].filter(n => n[1] > 1).map(n => n[0]);

или

const notUnique = [...new Set(arr.filter((n, i, a) => i !== a.indexOf(n)))];


UPD. Если надо просто избавиться от уникальных элементов, то:

const withoutUnique = arr.filter((n, i, a) => a.indexOf(n) !== a.lastIndexOf(n));

или, если вместо создания нового массива надо удалить элементы из того, который есть

const count = arr.reduce((acc, n) => (acc[n] = (acc[n] || 0) + 1, acc), {});
arr.reduceRight((_, n, i, a) => count[n] < 2 && a.splice(i, 1), null);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы