How do I make an array with unique elements (remove duplicates) - JavaScript?

In JavaScript, there are several ways to remove duplicate elements from an array and create a new array with unique values only.

Using filter() with indexOf()

The filter() method combined with indexOf() is a traditional approach that keeps only the first occurrence of each element:

var duplicateNumbers = [10, 20, 100, 40, 20, 10, 100, 1000];
console.log("Original array:");
console.log(duplicateNumbers);

var uniqueNumbers = duplicateNumbers.filter(function (value, index, array) {
    return array.indexOf(value) === index;
});

console.log("Array with unique elements:");
console.log(uniqueNumbers);
Original array:
[
  10,  20, 100,
  40,  20,  10,
 100, 1000
]
Array with unique elements:
[ 10, 20, 100, 40, 1000 ]

Using Set (ES6)

The Set object automatically stores only unique values, making it the most efficient approach:

var duplicateNumbers = [10, 20, 100, 40, 20, 10, 100, 1000];
var uniqueNumbers = [...new Set(duplicateNumbers)];

console.log("Original array:");
console.log(duplicateNumbers);
console.log("Unique elements using Set:");
console.log(uniqueNumbers);
Original array:
[
  10,  20, 100,
  40,  20,  10,
 100, 1000
]
Unique elements using Set:
[ 10, 20, 100, 40, 1000 ]

Using reduce()

The reduce() method can build a new array by checking if each element already exists:

var duplicateNumbers = [10, 20, 100, 40, 20, 10, 100, 1000];

var uniqueNumbers = duplicateNumbers.reduce(function(acc, current) {
    if (acc.indexOf(current) === -1) {
        acc.push(current);
    }
    return acc;
}, []);

console.log("Original array:");
console.log(duplicateNumbers);
console.log("Unique elements using reduce:");
console.log(uniqueNumbers);
Original array:
[
  10,  20, 100,
  40,  20,  10,
 100, 1000
]
Unique elements using reduce:
[ 10, 20, 100, 40, 1000 ]

Comparison

Method Performance Browser Support Readability
filter() + indexOf() Slower for large arrays ES5+ Good
Set Fastest ES6+ Excellent
reduce() Moderate ES5+ Good

Conclusion

For modern JavaScript, use [...new Set(array)] as it's the most concise and performant. For older browser support, the filter() approach works reliably.

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

264 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements