Remove Duplicates from Arrays and Strings in JavaScript

Removing duplicates is a common problem in programming that can arise in various contexts, such as cleaning up data or ensuring unique entries. You might be asked this question during an interview, as it’s quite simple, and may warm you up to more difficult questions.

In this article, we will explore two solutions in JavaScript: one for removing duplicates from arrays and the other for removing duplicates from strings (although they’re very similar).

It is quite simple indeed, although if you are new to programming, you might not be familiar with the ways in which you can accomplish this. In this article, we will show you how to do it.

Removing Duplicates from Arrays

There are usually multiple ways to achieve something when you are programming. That’s exactly why we will take a look at two seperate ways to remove duplicates from an array. The first, we will go with an iterative approach, using a for loop, and in the second, we’ll use the Set object.

Iterative Approach

function removeDuplicates(arr) {
    const uniqueArr = [];

    for (let i = 0; i < arr.length; i++) {
        if (!uniqueArr.includes(arr[i])) {
            uniqueArr.push(arr[i]);
        }
    }
    return uniqueArr;
}

removeDuplicates([1, 1, 2, 3, 4, 5, 4, 1]); // [ 1, 2, 3, 4, 5 ]
removeDuplicates(['a', 'b', 'a', 'c', 'b']); // [ 'a', 'b', 'c' ]

There are a few things to note in the code above. First, we are declaring an empty array, uniqueArr. As you might already know, this empty array will store the unique values the code comes accross as it loops through the original array, arr.

Our code runs through the arr array, checking if uniqueArr contains the value or not. If it doesn’t, then push that value into uniqueArr.

Using a Set

JavaScript’s Set object automatically ensures that all values are unique. We can leverage this feature to remove duplicates from an array. It is incredibly simple and almost feels like cheating, but here we are.

function removeDuplicates(arr) {
    return [...new Set(arr)];
}

removeDuplicates([1, 2, 2, 3, 4, 4, 5]); // [ 1, 2, 3, 4, 5 ]

Using the Filter method

Another way to remove duplicates is by using the filter method in combination with indexOf.

function removeDuplicates(arr) {
    return arr.filter((item, index) => arr.indexOf(item) === index);
}

removeDuplicates([1, 2, 2, 3, 4, 4, 5]); // [ 1, 2, 3, 4, 5 ]

First, the filter method creates a shallow copy of a portion of an array, filtering it down to just the elements from the array that pass the test. indexOf returns the first index at which a given element can be found in the array, or -1 if it is not present.

As an example, we can create an array of random fruit:

const fruit = ['apple', 'banana', 'cherry'].

And if we wanted to check the indexOf an element, we can do so by using the method: fruit.indexOf('banana');, which will return 1, the index of banana.

Removing Duplicates from Strings

There’s not really a big difference in these solutions, just minor things you should be aware of. We almost didn’t include strings in this article, but it’s probably worth noting the minor differences. So let’s explore them.

Iterative Approach

function removeDuplicates(str) {
    let result = '';
    for (let i = 0; i < str.length; i++) {
        if (!result.includes(str[i])) {
            result += str[i];
        }
    }
    return result;
}

removeDuplicates('javascript'); // javscript

Using a Set

function removeDuplicates(str) {
    return [...new Set(str)].join('');
}

removeDuplicates('javascript'); // javscript

Using the Filter Method

function removeDuplicates(str) {
    return str.split('').filter((char, index) => str.indexOf(char) === index).join('');
}

removeDuplicates('javascript'); //javscript

So, as you can see, there really isn’t much difference in the code blocks above. We just introduced the split() and join() method in order to work with the strings. We’re also not pushing() into the empty string variable in the iterative solution, as that is an array method.

Conclusion

As we said in the introduction, you may be asked this during an interview, to measure your abilities with JavaScript. We explored three different ways to accomplish the same goal, and it is worth being familiar with all of them. For instance, if you were to use the filter method, the interviewer may ask you to come up with another solution that doesn’t use the filter method.

We hope you enjoyed this article. Let us know what you think in the comments below!

comments powered by Disqus

Related Posts

Finding Free and Discounted Programming Books

As an avid reader, I’m always looking for places to find my next book. If they’re free, even better. Although it’s not always so easy finding them, there are plenty available online.

Read more

Getting Started with Google Cloud

In this article, we’re going to be taking a first look at Google Cloud, a leading player in the world of cloud computing, offers services and tools designed to drive innovation and ease operations.

Read more

The Great JavaScript Debate: To Semicolon or Not?

Since I’ve started learning this language, JavaScript has undergone some heavy changes. Most notably, it seems to be the norm to not use semicolons anymore.

Read more