@bach1

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

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

let allArr = [1, 3, 4, 7, 13, 1, 2, 4, 13, 15];
  • Вопрос задан
  • 746 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Как проверить, есть ли в массиве повторяющиеся элементы...

const hasDuplicates = arr.length > new Set(arr).size;

...и как записать эти элементы в новый массив...

// Получаем повторяющиеся элементы в единственном экземпляре
const duplicatedItemsUnique = Array.from(arr.reduce((acc, n) => (
  acc[+acc[0].has(n)].add(n),
  acc
), [ new Set, new Set ])[1]);

// Получаем все неуникальные элементы
const duplicatedItemsAll = arr.filter(function(n) {
  return this.get(n) > 1;
}, arr.reduce((acc, n) => acc.set(n, -~acc.get(n)), new Map));

...или оставить только элементы которые повторяются?

arr.splice(0, arr.length, ...arr.filter(function(n) {
  return this.get(n);
}, arr.reduce((acc, n) => acc.set(n, acc.has(n)), new Map)));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы