Hola compañeros. Tengo una duda: Hice la función para calcular la moda, y en la consola funciona de maravilla. Pero, intenté recibir un a...

Juan José Beltrán

Juan José Beltrán

Pregunta
studenthace 4 años

Hola compañeros. Tengo una duda:

Hice la función para calcular la moda, y en la consola funciona de maravilla. Pero, intenté recibir un array de un input para que el usuario no tenga que abrir la consola. El problema viene cuando presiono el botón de calcular la moda. Es curioso porque, si lo presiono, funciona perfectamente en la consola. El resultado es el esperado, pero, cuando quiero imprimir la moda en una etiqueta de párrafo en el html, no funciona. Me manda un valor undefined. Así:

Como pueden ver, en la consola el resultado es el esperado, pero en el parrafo destinado a imprimir ese resultado, la variable moda es undefined.

Agradecería mucho su ayuda!

Les dejo mi código:

HTML

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Moda</title> </head> <body> <header> <h1>Moda</h1> </header> <main> <section class="seccion-principal"> <form action="" class="form"> <!-- Ingresar los datos --> <label for="inputModa" class="form__label">Ingresa uno por uno los datos</label> <input type="number" id="inputModa" class="form__input" placeholder="Dato" /> <button type="reset" class="form__button" onclick="agregarNumero()"> Agregar </button> <br> <!-- Moda --> <button type="reset" class="form__button" onclick="onClickCalcularModa()"> Calcular Moda </button> <!-- Texto a aparecer --> <div class="form__texto-aparecer"> <p id="textoAparecer" class="texto-aparecer__p"></p> <p class="texto-aparecer__p"> Nota: Cada vez que necesites una nueva moda con nuevos valores, <br> deberás recargar esta página :] </p> </div> </form> </section> </main> <script src="./modaReducida.js"></script> </body> </html>

JS

// Función para la moda function calcularModa(arreglo = []) { const objetoPrincipal = {}; // Se declara la cuenta como un objeto para luego llenarlo arreglo.map( // .map recorre cada uno de los elementos function (elementoDentroDelObjeto) { // Función anonima if (objetoPrincipal[elementoDentroDelObjeto]) { objetoPrincipal[elementoDentroDelObjeto] += 1; } else { objetoPrincipal[elementoDentroDelObjeto] = 1; } } ); const objetoConvertidoArray = Object.entries(objetoPrincipal).sort( function (elementoA, elementoB) { return elementoA[1] - elementoB[1]; } ); console.log(objetoConvertidoArray); const moda = objetoConvertidoArray[objetoConvertidoArray.length - 1]; console.log("la moda es: " + moda); } // Cierra calcularModa // Arreglo para obtener los datos del input const arreglo = []; // ----> Obtener array por HTML <---- function agregarNumero() { const input = document.getElementById("inputModa"); const nuevoValor = parseInt(input.value); arreglo.push(parseFloat(nuevoValor)); arreglo.sort( function(a,b) { return a - b; } ); console.log(arreglo); } // Botón onClick function onClickCalcularModa () { const modaa = calcularModa(arreglo); const mostrar = document.getElementById("textoAparecer"); mostrar.innerHTML = "La moda es: " + modaa; }
  • No presten mucha atención a las anotaciones, las uso para entender mejor

Gracias!

2 respuestas
para escribir tu comentario
    Juan José Beltrán

    Juan José Beltrán

    studenthace 4 años

    Muchas gracias Carlos, me fué de mucha ayuda!

    Carlos Iván Ochoa Gómez

    Carlos Iván Ochoa Gómez

    studenthace 4 años

    Hola Confleis, te falta retornar un valor, debajo del console.log retorna la moda

    console.log("la moda es: " + moda); return moda;

    y solo te faltaría quitar la coma y las veces que se repitió.

Curso Práctico de JavaScript

Curso Práctico de JavaScript

Aprende desarrollo web con JavaScript. Practica los fundamentos de la programación para crear algoritmos que resuelven problemas en la vida real. Convierte problemas en algoritmos con JavaScript y expande su poder integrando HTML interactivo. Descubre el potencial de programar sitios web con JavaScript junto a tu profesor JuanDC.

Curso Práctico de JavaScript
Curso Práctico de JavaScript

Curso Práctico de JavaScript

Aprende desarrollo web con JavaScript. Practica los fundamentos de la programación para crear algoritmos que resuelven problemas en la vida real. Convierte problemas en algoritmos con JavaScript y expande su poder integrando HTML interactivo. Descubre el potencial de programar sitios web con JavaScript junto a tu profesor JuanDC.