Skip to content

Latest commit

 

History

History
44 lines (31 loc) · 1.68 KB

README.md

File metadata and controls

44 lines (31 loc) · 1.68 KB

Reto 01: 🎁 ¡Primer regalo repetido!

Santa Claus 🎅 ha recibido una lista de números mágicos que representan regalos 🎁, pero algunos de ellos están duplicados y deben ser eliminados para evitar confusiones. Además, los regalos deben ser ordenados en orden ascendente antes de entregárselos a los elfos.

Tu tarea es escribir una función que reciba una lista de números enteros (que pueden incluir duplicados) y devuelva una nueva lista sin duplicados, ordenada en orden ascendente.

const gifts1 = [3, 1, 2, 3, 4, 2, 5]
const preparedGifts1 = prepareGifts(gifts1)
console.log(preparedGifts1) // [1, 2, 3, 4, 5]

const gifts2 = [6, 5, 5, 5, 5]
const preparedGifts2 = prepareGifts(gifts2)
console.log(preparedGifts2) // [5, 6]

const gifts3 = []
const preparedGifts3 = prepareGifts(gifts3)
console.log(preparedGifts3) // []
// No hay regalos, la lista queda vacía

Mi solución explicada

function prepareGifts(gifts) {
  return [...new Set(gifts)].sort((a, b) => a - b);
}

Primero, creamos un nuevo Set a partir de la lista de regalos. Un Set es una colección de valores únicos, por lo que automáticamente elimina los duplicados.

[...new Set(gifts)]

Después, convertimos el Set en un array con el operador de propagación (...) y lo ordenamos en orden ascendente con el método sort.

Hay que tener en cuenta que el trabajar con números, el método sort por defecto ordena los elementos como si fueran cadenas de texto. Por lo tanto, es necesario pasar una función de comparación que convierta los elementos a números antes de compararlos.

[...new Set(gifts)].sort((a, b) => a - b)

Finalmente, devolvemos el array resultante.