JavaScript-如何在一个数组中找到重复的内容

192 阅读1分钟

如何查找和删除JavaScript数组中的重复部分

如果你想删除重复的内容,有一个非常简单的方法,利用JavaScript提供的Set数据结构。这是一个单行本。

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 ]

注意,这只适用于原始值,而不是对象。在对象的情况下,你需要一种方法来比较它们。