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.

Updated on: 2026-03-15T23:19:00+05:30

314 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements