Рубрики
Без рубрики

JavaScript, как найти дубликаты в массиве

Как найти и удалить дубликаты в массиве JavaScript

Если вы хотите удалить дубликаты, есть очень простой способ, используя заданную структуру данных, предоставляемую JavaScript. Это однострочник:

const yourArrayWithoutDuplicates = [...new Set(yourArray)]

Чтобы определить, какие элементы являются дубликатами, вы можете использовать этот “массив без дубликатов”, который мы получили, и удалить каждый элемент, который он содержит, из исходного содержимого массива:

const yourArray = [1, 1, 2, 3, 4, 5, 5]

const yourArrayWithoutDuplicates = [...new Set(yourArray)]

let duplicates = [...yourArray]
yourArrayWithoutDuplicates.forEach((item) => {
  const i = duplicates.indexOf(item)
  duplicates = duplicates
    .slice(0, i)
    .concat(duplicates.slice(i + 1, duplicates.length))
})

console.log(duplicates) //[ 1, 5 ]

Другое решение состоит в том, чтобы отсортировать массив, а затем проверить, совпадает ли “следующий элемент” с текущим элементом, и поместить его в массив:

const yourArray = [1, 1, 2, 3, 4, 5, 5]

let duplicates = []

const tempArray = [...yourArray].sort()

for (let i = 0; i < tempArray.length; i++) {
  if (tempArray[i + 1] === tempArray[i]) {
    duplicates.push(tempArray[i])
  }
}

console.log(duplicates) //[ 1, 5 ]

Обратите внимание, что это работает только для примитивных значений, а не для объектов. В случае объектов вам нужен способ их сравнения.

Оригинал: “https://flaviocopes.com/how-to-find-duplicates-array-javascript/”