← JavaScript

Coding challenge

remove duplicate numbers from an array.

Challenge: remove duplicate numbers from an array.
Input: [1, 2, 2, 3, 4, 4]
Expected output: [1, 2, 3, 4]
Show solution
// Reto: eliminar números duplicados de un arreglo.
// Entrada: [1, 2, 2, 3, 4, 4]
// Salida esperada: [1, 2, 3, 4]

// Solución 1: usando un Set.
// Un Set solo almacena valores únicos, así que eliminar duplicados
// es tan simple como crear un Set y convertirlo de nuevo en arreglo.
function quitarDuplicados(arreglo) {
  return [...new Set(arreglo)];
}

// Solución 2: usando filter (útil para explicar la lógica).
// Conservamos un elemento solo si es la primera vez que aparece.
function quitarDuplicadosConFilter(arreglo) {
  return arreglo.filter((valor, indice) => arreglo.indexOf(valor) === indice);
}

console.log(quitarDuplicados([1, 2, 2, 3, 4, 4]));        // [1, 2, 3, 4]
console.log(quitarDuplicados(["a", "b", "a", "c"]));      // ["a", "b", "c"]
console.log(quitarDuplicadosConFilter([5, 5, 5, 1]));     // [5, 1]
console.log(quitarDuplicados([]));                         // [] (caso límite)

// Explicación:
// new Set(arreglo) descarta automáticamente los valores repetidos y el spread
// (...) lo convierte de nuevo en un arreglo. La versión con filter conserva un
// valor solo cuando su índice coincide con el primer índice donde aparece.

module.exports = { quitarDuplicados, quitarDuplicadosConFilter };