008. Ejercicios de lógica de programación

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]);
Scroll al inicio