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]);
