How to Splice Duplicate Item from JavaScript Array?

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]

Table of Content

  • Using indexOf and splice method
  • Using Set
  • Using reduce() method

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.

JavaScript
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

JavaScript
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.

JavaScript
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 ]