Count Unique Elements in Array Without Sorting using JavaScript

One can count unique elements(distinct elements) present in an array without sorting JavaScript. There are several methods of counting unique elements without sorting in JavaScript. Below is an example to understand the problem clearly.

Example:

Input: [ 1,2, 3, 1, 3, 4, 5, 5, 2] 
Output: 5

Explanation: Unique Elements in array : 1, 2, 3, 4, 5. Total 5 unique elements present in array

There are several approaches to count unique elements in array without sorting in JavaScript which are as follows:

Table of Content

  • Using Array Iteration
  • Using a Set
  • Using an object/Map

Using Array Iteration

Use the forEach method to iterate through each element of the input array and for each element in the input array, check if it exists in the unique array using the includes method. If the element is not already present in the unique array, push it into the unique array. Return the length of the unique array.

Example: To demonstrate the counting of unique elements in array using Array Iteration in JavaScript.

JavaScript
function countUniqueArray(arr) {
    const unique = [];
    arr.forEach(num => {
        if (!unique.includes(num)) {
            unique.push(num);
        }
    });
    return unique.length;
}

const arr = [1, 2, 3, 1, 4, 2, 5];
console.log(countUniqueArray(arr));

Output
5

Time complexity: O(n2)

Space complexity: O(n)

Using a Set

Initialize a new Set. Use the Set’s constructor to create a Set from the input array arr. This will automatically remove duplicates as Sets only store unique elements. Return the size of set.

Example: To demonstrate the counting of unique elements in array using a set method in JavaScript.

JavaScript
function countUniqueSet(arr) {
    // Create a Set to s
    // tore unique elements
    const uniqueSet = new Set(arr);

    // Return the size of the Set, 
    // which represents the count of unique elements
    return uniqueSet.size;
}

const arr = [1, 2, 3, 1, 4, 2, 5];
console.log(countUniqueSet(arr)); 

Output
5

Time complexity: O(n)

Space complexity: O(n)

Using an object/Map

Create an empty object. Use the forEach method to iterate through each element of the input array. For each element in the input array, set its value in the map object to true. Since objects in JavaScript can only have unique keys, this effectively stores each unique element of the array as a key in the object. Use Object.keys(map) to get an array of all the keys in the map object, and then return the length of this array.

Example: To demonstrate the counting of unique elements in array using an object/Map in JavaScript.

JavaScript
function countUniqueMap(arr) {
    // Initialize an empty object 
    // to store unique elements
    const map = {};

    // Iterate through the input array
    arr.forEach(num => map[num] = true);

    // Return the number of keys in the object,
    // which represents the count of unique elements
    return Object.keys(map).length;
}

const arr = [1, 2, 3, 1, 4, 2, 5];
console.log(countUniqueMap(arr));

Output
5

Time complexity: O(n)

Space complexity: O(n)



Contact Us