Remover elementos duplicados en un array

En este tutorial, aprenderás tres maneras de filtrar elementos duplicados en un array y obtener uno nuevo con valores únicos.

Remover elementos duplicados en un array

En este tutorial, aprenderás tres maneras de filtrar elementos duplicados en un array y obtener uno nuevo con valores únicos.

Usando Set

Este método es mi favorito por su simpleza y el poco espacio que necesita. 😁

const animals = ['🐶', '🐭', '🐭', '🦊', '🐻', '🦁', '🐶']

const uniqueAnimals = [...new Set(animals)] 
// [ '🐶', '🐭', '🦊', '🐻', '🦁' ]

Un Set es una colección de elemento únicos

Cuando un nuevo Set se crea a través de un Array que contiene elementos duplicados, el constructor se encarga de mantener solo los elementos únicos.

const uniqueAnimals = new Set(animals) // Set(5) {'🐶','🐭','🦊','🐻','🦁', __proto__}

Gracias al spread operator podemos convertir los elementos de nuestro Set a un Array de nuevo.

[...new Set(animals)] // [ '🐶', '🐭', '🦊', '🐻', '🦁' ]

Usando filter e indexOf()

const animals = ['🐶', '🐭', '🐭', '🦊', '🐻', '🦁', '🐶']

const uniqueAnimals = animals.filter(
  (animal, index) => animals.indexOf(animal) === index
) 
// [ '🐶', '🐭', '🦊', '🐻', '🦁' ]

El método filter devuelve un nuevo Array con los valores que cumplen con un criterio

const uniqueAnimals = animals.filter(animal => animal === '🦊') 
// [ '🦊' ]

El método indexOf nos devuelve el primer índice en el que se puede encontrar el elemento dado.

const uniqueAnimals = animals.indexOf('🦊') 
// 3

Combinando estos dos métodos, cuando un elemento duplicado es encontrado por primera vez, su índice coincide con la primera ocurrencia y el elemento es agregado a nuestro array. Al contrario de los siguientes índices del mismo elemento que no cumplirán con el índice de la primera ocurrencia, por lo tanto no cumplen con el criterio y no son devueltos.

Usando forEach e includes

const animals = ['🐶', '🐭', '🐭', '🦊', '🐻', '🦁', '🐶']

const uniqueAnimals = []
animals.forEach(animal => !uniqueAnimals.includes(animal) && uniqueAnimals.push(animal))
// [ '🐶', '🐭', '🦊', '🐻', '🦁' ]

ForEach nos permite recorrer el arreglo del principio a fin.

El método includes determina si un array incluye un elemento determinado

animals.includes('🐭') // true
animals.includes('🐸') // false

A medida que recorremos nuestro array animals, comprobamos si el elemento existe en nuestro nuevo array para determinar si debemos agregarlo o no. ¡Al final dispondremos de un nuevo array con animales únicos!

Did you find this article valuable?

Support Sergio Serrano by becoming a sponsor. Any amount is appreciated!