Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
Remove/ filter duplicate records from array - JavaScript?
JavaScript arrays often contain duplicate records that need to be removed. There are several effective methods to filter duplicates, depending on whether you're working with primitive values or objects.
Sample Data with Duplicates
Let's start with an array of nationality objects containing duplicate values:
var objectOfNationality = [
{ nationality: "Indian" },
{ nationality: "American" },
{ nationality: "Emirati" },
{ nationality: "Indian" },
{ nationality: "American" }
];
console.log("Original array:", objectOfNationality);
Original array: [
{ nationality: 'Indian' },
{ nationality: 'American' },
{ nationality: 'Emirati' },
{ nationality: 'Indian' },
{ nationality: 'American' }
]
Method 1: Using Set with map() for Object Properties
Extract unique property values by mapping to the desired property and using Set:
function removeOrFilterNationality(objectOfNationality) {
return Array.from(new Set(objectOfNationality.map(tempObject => tempObject.nationality)));
}
console.log("Unique nationalities:", removeOrFilterNationality(objectOfNationality));
Unique nationalities: [ 'Indian', 'American', 'Emirati' ]
Method 2: Using filter() with findIndex()
Keep only the first occurrence of each unique nationality:
function removeDuplicateObjects(arr) {
return arr.filter((obj, index, self) =>
index === self.findIndex(item => item.nationality === obj.nationality)
);
}
console.log("Unique objects:", removeDuplicateObjects(objectOfNationality));
Unique objects: [
{ nationality: 'Indian' },
{ nationality: 'American' },
{ nationality: 'Emirati' }
]
Method 3: Using reduce() for Complex Logic
Build a new array by checking if each nationality already exists:
function removeDuplicatesWithReduce(arr) {
return arr.reduce((unique, obj) => {
const exists = unique.find(item => item.nationality === obj.nationality);
if (!exists) {
unique.push(obj);
}
return unique;
}, []);
}
console.log("Using reduce:", removeDuplicatesWithReduce(objectOfNationality));
Using reduce: [
{ nationality: 'Indian' },
{ nationality: 'American' },
{ nationality: 'Emirati' }
]
Comparison
| Method | Returns | Performance | Use Case |
|---|---|---|---|
| Set + map() | Array of values | Fast | Extract unique property values |
| filter() + findIndex() | Array of objects | Medium | Keep original objects |
| reduce() | Array of objects | Medium | Complex deduplication logic |
Conclusion
Use Set with map() for extracting unique values, or filter() with findIndex() when you need to preserve the original objects. Each method serves different deduplication requirements effectively.
Advertisements
