No obtengo el valor mínimo y muestra 0, pero en este caso de Math.max(), muestra el valor máximo correcto. ¿Por que es esto entonces?
function values(ar) { var min_val = 0; for(var i = 0; i < ar.length; i++) { min_val = Math.min(min_val,ar[i]); } document.write(min_val); } values([14,99, 10, 18,19, 11, 34]);Siempre devuelve 0 porque lo comparas con min_val. Donde min_val se convierte en el valor más bajo, ya que 0 es más bajo que cualquier valor en la matriz. Por lo tanto, min_val siempre se establecerá igual a sí mismo y permanecerá en 0. Aquí está mi solución:
let ar =[14,99,10,18,19,11,34] let min_val = Math.min(...ar) console.log(min_val)Math.min() recibe argumentos como Math.min(-2, -3, -1) o con matriz Math.min(...arr) . Está dando estos argumentos Math.min([14,99, 10, 18,19, 11, 34], 0) donde 0 es mínimo. Por lo tanto, está recibiendo 0. Además, no es necesario un bucle ya que Math.min() encuentra el mínimo. Entonces, la solución sería:
function values(ar) { var min_val = Math.min(...ar); //document.write(min_val); return min_val } console.log(values([14,99, 10, 18,19, 11, 34]))o (para que coincida con su caso)
function values(ar) { var min_val = Math.min(...ar); document.write(min_val); }en forma más corta:
document.write(Math.min(...ar));Para su comportamiento esperado, para encontrar el mínimo, desea comenzar en el máximo absoluto (Infinito).
var min_val = Infinity; for(var i = 0; i < ar.length; i++) { min_val = Math.min(min_val,ar[i]); } document.write(min_val); } values([14,99, 10, 18,19, 11, 34]);``` Esto escribirá Infinity para matrices vacías o el valor mínimo para la entrada.