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
filtermethod. - The
filtermethodincludesa callback that accepts elements and indexOf. - Check each element’s position in the array using the
indexOfmethod. - If
indexOfreturns 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
Setis 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
setobject using thenewoperator, with the constructor accepting array values. - Using the
spread operatorto 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
uniqBymethods 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
reducemethod 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.
