[ Foro de Javascript ]

Array Undefined

31-Jan-2023 19:35
Invitado (Lukerio)
2 Respuestas

Necesito obtener el valor minimo de un array llenado por teclado. El array se llena correctamente, pero cuando igualo a la variable minimo, me da undefined

function minimo() {
           var miArray = [];
           var min;
           //Llenamos el array con cinco datos
           for (var i = 1; i <= 5; i++) {
               var num = prompt("Introduce un numero");
               miArray.push(num);
           }
           for (var i = 0; i < miArray.length; i++) {
               if (parseInt(miArray[i]) < min) {
                   min = miArray[i];
               }
           }
           console.log(min);
           document.write("El menor número introducido es " + parseInt(min));
       }


01-Feb-2023 11:56
Nacho Cabanes (+83)

Claro, debes dar una valor inicial a "min", típicamente tomado del primero de los datos.


14-Mar-2023 23:07
Invitado (Alejandro Andrade)

El problema en tu código es que nunca inicializas la variable 'min', por lo que su valor es 'undefined'. Entonces, cuando tratas de comparar el valor de un elemento del array con min, la primera vez que entra en el bucle 'if' es como si estuvieras comparando con 'undefined'.

Para solucionar esto, puedes inicializar 'min' con un valor alto (por ejemplo, el primer elemento del array) antes de entrar en el bucle de comparación. Aquí te dejo una posible solución:

function minimo() {
 var miArray = [];
 var min;
 
 // Llenamos el array con cinco datos
 for (var i = 1; i <= 5; i++) {
   var num = prompt("Introduce un numero");
   miArray.push(num);
 }
 
 // Inicializamos min con el primer elemento del array
 min = parseInt(miArray[0]);
 
 for (var i = 1; i < miArray.length; i++) {
   if (parseInt(miArray[i]) < min) {
     min = parseInt(miArray[i]);
   }
 }
 
 console.log(min);
 document.write("El menor número introducido es " + min);
}

Espero que esto te ayude.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)