Ejercicio 25:

Programa una función que dado un arreglo de elementos, elimine los duplicados, por ejemplo miFuncion(["x", 10, "x", 2, "10", 10, true, true]) devolverá ["x", 10, 2, "10", true]

La forma en que lo hice:

Creo la función expresada quitarDuplicados que recibe un arr como parámetro y la inicializo como undefined. Valido que no llegue un arreglo vacío y que sea un arreglo.

En el resturn con un console.info creo un objeto con los atributos: original (que es la variable arr ), sinDuplicados (con el método .filter() evaluo el elemento, la posición y el mismo arreglo -self-, utilizando .indexOf() busco el valor con la posición para no tener elementos repetidos).

Otra forma de hacer la parte de return utilizando .set() , que permite generar un objeto en el cual no tiene elementos duplicados, sería así:
return console.info({
original: arr,
sinDuplicados:[...new Set(arr)]
})

const quitarDuplicados = (arr = undefined) =>{ if(arr === undefined) return console.warn("No ingresaste un arreglo, no puede estar vacío."); if(!(arr instanceof Array)) return console.error("El valor que ingresaste no es un arreglo"); if(arr.length === 0) return console.error("El arreglo está vacío"); if(arr.length === 1) return console.error("El arreglo debe tener al menos dos elementos"); return console.info({ original: arr, sinDuplicados: arr.filter((value,index,self) => self.indexOf(value)===index), }) }

Llamo a la función vacía para ver mis verificaciones

quitarDuplicados();

Llamo a la función con un objeto como parámetro para ver mis verificaciones

quitarDuplicados({});

Llamo a la función con un Array vacío como parámetro para ver mis verificaciones

quitarDuplicados([]);

Llamo a la función con un Array con un solo elemento como parámetro para ver mis verificaciones

quitarDuplicados([10]);

Llamo a la función

quitarDuplicados([10,2,10,"x","10",true,true]);

Con F12 pueden inspeccionar 🧐 por consola el código en acción.