Eliminar Duplicados de un Array con JavaScript

Esta forma de eliminar los duplicados es bastante simple y elegante, gracias a los métodos Array.filter() y Array.indexOf().

El método Array.filter() crea un nuevo array a partir de uno existente, que contiene sólo los elementos que cumplen con el criterio del filtro. El método Array.indexOf(), por otro lado, devuelve el índice del primer elemento de un array cuyo valor coincide con el que se le pasa como parámetro.

El algoritmo para eliminar los duplicados funciona de esta forma:

  1. En el callback de Array.filter(), usaremos Array.indexOf() para obtener el índice del primer elemento que coincida con el elemento actual del bucle de nuestro array original.
  2. Si ese índice coincide con el índice del elemento actual del bucle, lo añadiremos al array de resultado. Si no, es una entrada duplicada y la ignoraremos.

Aquí hay un ejemplo para que se vea más claro:

¿Por qué funciona esto?

Veamos la entrada “computer1”, que aparece dos veces, en los índices 0, y 4. El método computers.indexOf(computer) devolverá 0 para cada instancia de “computer1”, porque devuelve el índice del primer elemento coincidente.

La primera vez que aparece “computer1”, los valores de indexOf(computer) e index coinciden, así que se añade a nuestro array de resultado. La siguiente vez no lo hace (4 es distinto de 0), y es ignorado.

--

--