JavaScript, how to find duplicates in an array
How to find and remove duplicates in a JavaScript array
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.
→ Get my JavaScript Beginner's Handbook
I wrote 20 books to help you become a better developer:
- JavaScript Handbook
- TypeScript Handbook
- CSS Handbook
- Node.js Handbook
- Astro Handbook
- HTML Handbook
- Next.js Pages Router Handbook
- Alpine.js Handbook
- HTMX Handbook
- React Handbook
- SQL Handbook
- Git Cheat Sheet
- Laravel Handbook
- Express Handbook
- Swift Handbook
- Go Handbook
- PHP Handbook
- Python Handbook
- Linux/Mac CLI Commands Handbook
- C Handbook