Best 5 ways to remove the duplicate object from array In javascript| typescript
- Admin
- Mar 6, 2024
- Typescript Angular
The examples below demonstrate removing duplicate items from an array, whether it comprises objects or primitive types. The new array returned will contain no duplicates.
If an array consists of primitive types, eliminating duplicates is straightforward. However, if it contains objects, duplicate filtering requires a key-value pair validation check.
Removing duplicates is a common task for developers in application development.
Let’s declare an array object to showcase the removal of duplicate objects within an array:
let courseArray = [
{ id: 1, name: "javascript" },
{ id: 2, name: "typescript" },
{ id: 11, name: "angular" },
{ id: 1, name: "javascript" },
];
There are multiple ways to remove duplicates from an array.
Remove Duplicates from an array of primitives in typescript
The following ways we can remove duplicates.
Using Filter method in typescript
It’s effortless to remove duplicates from a simple array of primitive values like strings, numbers, and Booleans. This example works for primitive types such as strings, numbers, and Booleans.
- Declare an array of numbers with duplicate values.
- Iterate through each element in the array using the
filter
method. - The
filter
methodincludes
a callback that accepts elements and indexOf. - Check each element’s position in the array using the
indexOf
method. - If
indexOf
returns a valid index position, return an array without duplicates.
let simpleArray = [1, 4, 5, 1, 1, 1]; simpleArray = simpleArray.filter( (element, i) => i === simpleArray.indexOf(element), ); console.log(simpleArray); //[ 1, 4, 5 ]
Using ES6 Set with spread operator
Set
is a new data structure introduced in ES6, the latest version of JavaScript. It does not accept duplicates.This example utilizes the following features of the ES6 language.
let numberStrings = ["one", "two", "one", "two"]; let myset = [...new Set(numberStrings)]; console.log(myset);
The following example explains the following
- The declared array of strings with duplicates for these examples.
- Creation of a
set
object using thenew
operator, with the constructor accepting array values. - Using the
spread operator
to set result values, returning an array and copying it to a new array - Finally, returning the new array without duplicates.
Using Lodash Uniq methods
Lodash’s uniq and
uniqBy
methods return an array by removing duplicate objects fromcourseArray
.The uniq method iterates through each element and calls the callback for each element, providing the object properties logic to check duplicate objects.
The resulting array maintains the same order as the input courseArray.
var result = _.uniq(courseArray, function (item) { return item.id && item.name; });
Using ES5 reduce and some methods
The array
reduce
method is one of the methods for reducing the array of elements. It has a callback called for each item during the iteration.The callback accepts the accumulator and the current values. The accumulator is a temporary array that will be updated based on each element. Object equality is checked with property values and logic as follows:
var filterArray = courseArray.reduce((accumulator, current) => { if ( !accumulator.some( (item) => item.id === current.id && item.name === current.name, ) ) { accumulator.push(current); } return accumulator; }, []); console.log(filterArray);
And the output:
[ { id: 1, name: "javascript" }, { id: 2, name: "typescript" }, { id: 11, name: "angular" }, ];
- Underscore uniq methods
If your application depends on the `underscore` library, this method is straightforward for removing duplicate elements from an array.
The `uniq` method accepts an input array and a callback. The callback accepts an object that checks for unique logic. The code below checks if each element and its values are the same as another object.
```javascript
var resultarray = _.uniq(courseArray function (element) {
return element.id && element.name;
});
Conclusion
In this tutorial, you learned multiple ways to remove duplicate elements from an array in JavaScript and TypeScript:
- ES6 Set with the spread operator
- ES5 Array reduce and some methods
- ES5 Array filter method
- Lodash and Underscore library Uniq method
In summary, out of all these methods, Set performs the best in terms of performance.
Here’s the rank order in terms of performance, from best to worst:
Set -> uniq -> reduce -> filter.