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
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.
Advertisements
