Open In App

How to Splice Duplicate Item from JavaScript Array?

Last Updated : 19 Jul, 2024
Summarize
Comments
Improve
Suggest changes
Like Article
Like
Share
Report
News Follow

Given an array of numbers or strings containing some duplicate values, the task is to remove these duplicate values from the array without creating a new array or storing the duplicate values anywhere else.

Examples: 

Input: arr = [1, 2, 3, 4, 3, 2, 1];
Output: [1,2,3,4]

Input:  [1, 4, 6, 1, 2, 5, 2, 1, 6, 8, 7, 5];
Output: [4, 1, 5, 2, 6, 8, 7]

Using indexOf and splice method

The indexOf() method returns the first index at which a given element can be found in the array, or -1 if it is not present. By iterating through the array and checking each element's index, we can identify duplicates and splice them out.

Example: Implementation of a program to splice duplicate items in an array using the splice method.

function removeDupes(arr) {
    for (let i = 0; i < arr.length; i++) {
        while (arr.indexOf(arr[i], i + 1) !== -1) {
            arr.splice(arr.indexOf(arr[i], i + 1), 1);
        }
    }
    return arr;
}

const arr = [3, 4, 2, 4, 5, 6, 3, 2, 1, 2, 7, 8];
const uniqueArr = removeDupes(arr);
console.log(uniqueArr);

Output
[
  3, 4, 2, 5,
  6, 1, 7, 8
]

Time Complexity: O(n^2)

Space Complexity: O(1)

Using Set

This approach efficiently removes duplicate elements from an array by leveraging the set's inherent uniqueness property, ensuring each element occurs only once. Through iteration and set membership checks, duplicates are identified and removed, resulting in a unique array with no repeated elements.

Example: Implementation of program to splice duplicate item in array using set

const arr = [1, 4, 6, 1, 2, 5, 2, 1, 6, 8, 7, 5];
const uniqueSet = new Set();

for (let i = 0; i < arr.length; i++) {
    const el = arr[i];
    if (uniqueSet.has(el)) {
        arr.splice(i, 1);
        i--;
    } else {
        uniqueSet.add(el);
    }
}

console.log(arr);

Output
[
  1, 4, 6, 2,
  5, 8, 7
]

Time Complexity: O(n^2)

Space Complexity: O(n)

Using reduce() method

In this approach we are using the reduce method. This applies a function against an accumulator and each element in the array to reduce it to a single value. Here the accumulator is an array that initially is empty. For each element in the original array, if the accumulator doesn't already include that element, it will be added to the accumulator.

Example: Implementation of program to splice duplicate item in array using reduce() method.

let array = [1, 2, 3, 4, 2, 3, 5];
let uniqueArray = array.reduce((accumulator, currentValue) => {
    if (!accumulator.includes(currentValue)) {
        accumulator.push(currentValue);
    }
    return accumulator;
}, []);
console.log(uniqueArray);

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

Using filter() Method

In this approach, we can use the filter() method to remove duplicate values from an array. The filter() method creates a new array with all elements that pass the test implemented by the provided function. In this case, we'll use indexOf to check if the current element's index matches its first occurrence in the array.

Example: Implementation of a program to remove duplicate items in an array using the filter() method.

let arr = [1, 4, 6, 1, 2, 5, 2, 1, 6, 8, 7, 5];

arr = arr.filter((item, index) => arr.indexOf(item) === index);

console.log(arr); // Output: [1, 4, 6, 2, 5, 8, 7]

Output
[
  1, 4, 6, 2,
  5, 8, 7
]

Using Two Pointers Technique

The Two Pointers technique is a common approach to solving array problems without using additional space. Here, we'll use two pointers to traverse the array and remove duplicates in place.

Example: The below example demonstrates how to remove duplicate values from an array using the Two Pointers technique.

function removeDuplicates(arr) {
    if (arr.length <= 1) return arr;

    let i = 0;
    for (let j = 1; j < arr.length; j++) {
        if (arr[i] !== arr[j]) {
            i++;
            arr[i] = arr[j];
        }
    }

    // Splice the remaining duplicates after the unique elements
    arr.splice(i + 1);
    return arr;
}


let arr = [1, 2, 3, 4, 3, 2, 1];
console.log(removeDuplicates(arr));

let arr2 = [1, 4, 6, 1, 2, 5, 2, 1, 6, 8, 7, 5];
console.log(removeDuplicates(arr2)); 

Output
[
  1, 2, 3, 4,
  3, 2, 1
]
[
  1, 4, 6, 1, 2,
  5, 2, 1, 6, 8,
  7, 5
]

Similar Reads

three90RightbarBannerImg