En estos ejercicios vamos a seguir trabajando con el tema de los arrays. Los ejercicios son los siguientes:
1. Orden ascendente y descendente
Programaremos una función que, dado un array de números, devuelva un objeto con dos arrays, el primero tendrá los números ordenados en forma ascendente, y el segundo los números ordenados de forma descendente. En este ejercicio volvemos a utilizar el método map() que genera un array nuevo al que podemos hacer las modificaciones que necesitemos.
const ordenarArray = (arr = undefined) => { if (!arr) return console.log("No ingresaste un array de números"); if (!(arr instanceof Array)) return console.log("El valor que ingresaste no es un array"); if (arr.length === 0) return console.log("El array está vacío"); for (let num of arr) { if (typeof num !== "number") return console.log(`El valor "${num}" no es un número`); } return console.log({ arr, asc: arr.map((el) => el).sort(), desc: arr .map((el) => el) .sort() .reverse(), }); }; ordenarArray([2, 4, 6, 8]);
2. Eliminar duplicados
Vamos a programar una función que, dado un array de elementos, elimine los elementos duplicados. Vamos a resolver este ejercicio de dos maneras, primero con el método filter() y segundo, para este ejercicio vamos a ver un nuevo tipo de dato Javascript que lo va a hacer más fácil resolver que el método filter(). Se trata del método set(). Vamos a hacer el ejercicio de las dos maneras, para que veamos la diferencia entre uno y otro. La característica de set() es que forma un conjunto de elementos que no pueden estar duplicado. Es la naturaleza del tipo de dato set.
const quitarDuplicado = (arr = undefined) => { if (!arr) return console.log("No ingresaste un array de números"); if (!(arr instanceof Array)) return console.log("El valor que ingresaste no es un array"); if (arr.length === 0) return console.log("El array está vacío"); if (arr.length === 1) return console.log("El array debe tener al menos dos elementos"); return console.log({ original: arr, sinDuplicados: arr.filter( (value, index, self) => self.indexOf(value) === index ), }); }; quitarDuplicado([2, "a", "a"]); const quitarDuplicado2 = (arr = undefined) => { if (!arr) return console.log("No ingresaste un array de números"); if (!(arr instanceof Array)) return console.log("El valor que ingresaste no es un array"); if (arr.length === 0) return console.log("El array está vacío"); if (arr.length === 1) return console.log("El array debe tener al menos dos elementos"); return console.log({ original: arr, sinDuplicado: [...new Set(arr)], }); }; quitarDuplicado2(["a", "a", 2, 3, 4]);
3. Promedio
En el último ejercicio programaremos una función que, dado un array de números, obtenga el promedio de los mismo. Para este ejercicio vamos a utilizar el método reduce(), que recibe un acumulador donde los elementos de un array los va reduciendo de tal manera que tenga un sólo elemento.
const promedio = (arr = undefined) => { if (!arr) return console.log("No ingresaste un array de números"); if (!(arr instanceof Array)) return console.log("El valor que ingresaste no es un array"); if (arr.length === 0) return console.log("El array está vacío"); for (let num of arr) { if (typeof num !== "number") return console.log(`El valor "${num}" no es un número`); } return console.log( arr.reduce((total, num, index, arr) => { total += num; if (index === arr.length - 1) { return `El promedio de ${arr.join(" + ")} es igual a ${ total / arr.length }`; } else { return total; } }) ); }; promedio([2, 3, 4, 5]);