If you want to remove the duplicates, there is a very simple way, making use of the Set data structure provided by JavaScript. It’s a one-liner:
const yourArrayWithoutDuplicates = [...new Set(yourArray)]
To find which elements are duplicates, you could use this “array without duplicates” we got, and and remove each item it contains from the original array content:
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 ]
Another solution is to sort the array, and then check if the “next item” is same to the current item, and put it into an array:
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 ]
Note that this only works for primitive values, not objects. In the case of objects, you need a way to compare them.
Download my free JavaScript Beginner's Handbook and check out my JavaScript Course!
More js tutorials:
- The ES2018 Guide
- How to get the index of an iteration in a for-of loop in JavaScript
- How to format a number as a currency value in JavaScript
- The Object toString() method
- The Deno Handbook: a concise introduction to Deno 🦕
- How to solve the unexpected identifier error when importing modules in JavaScript
- The TypeScript Guide
- How to convert an Array to a String in JavaScript
- Is JavaScript still worth learning?