Stephen Sun

Software engineer based in Houston, Texas.

I'm a detail-oriented individual who thrives in fast-paced team environments. I have experience across different industries, working with both front end and back end technologies.

How to check if array contains duplicate values

Knowing how to check for duplicates in an array can be useful in many different situations. Here are two ways to accomplish this:

  1. Combination of some() and indexOf()
  2. Set()

Some Plus IndexOf

The some() method can be used to check if each element in an array passes a function.

We'll be passing a callback with two arguments: the element of the array and the index of the element.

In order to check whether a value already exists in an array (a duplicate), we'll use the indexOf() method and pass in each value from our colors array.

The indexOf() method will return the index of the first occurence of the value.

Remember how our callback in the some() method also contains the index (i)?

This will be our verification!

If this condition passes and there are equal index values, that means there are duplicates.

In our example, we have two values of "blue" and two values of "red".

This will satisfy our index comparison, and return true.

const colorsArray = ['red', 'blue', 'green', 'blue', 'red']

const doesArrayHaveDuplicates = colorsArray.some(
  (val, i) => colorsArray.indexOf(val) !== i
)

console.log(doesArrayHaveDuplicates) // true

Set

Set is one of the great features that came with ES6.

You can think of Set as an object with a collection of values.

The only catch is that each value in the Set must be unique, which makes it perfect for finding duplicates!

If a value already exists in the Set, it won't be added to the collection.

In our example, we create a new Set object with our colors array as our collection of values.

Set internally will check for unique values, and since there are two values of "red", the size of our Set will only by 3 (instead of 4).

The length of our colors array is 4, so our validation will return true, meaning duplicates exist.

const doesArrayHaveDuplicates = array => {
  return array.length !== new Set(array).size
}

const colorsArray = ['red', 'blue', 'green', 'red']
console.log(doesArrayHaveDuplicates(colorsArray)) // fal