Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

206
Vistas
¿Por qué la salida es NaN?

Estoy aprendiendo Javascript, cuando quiero calcular usando una fórmula, los datos resultantes son NaN.

Quiero que los datos resultantes sean

 ar = [37, 36.63, 35.68, 38.81, 37.67, 37.64, 37.64, 39.74, 40.67, 40.61]; ma = [0.00, 0.63, 3.32, 0.81, 0.33, 0.36, 2.36, 1.26, 0.33, 1.61];

¿Hay algún problema con mi código que me hace obtener esta respuesta?

 var suhu = [37, 36, 39, 38, 38, 38, 40, 41, 41, 39]; var ar = [] var ma = [] var temp = 0 // AR for (var i = 1; i < suhu.length; i++) { ar[0] = suhu[0] temp = 0.99 * suhu[i - 1] + 0.06 * ma[i - 1] ar.push(temp) } // MA for (var j = 0; j < suhu.length; j++) { suhu[j] = Math.abs(suhu[j] - ar[j]); ma.push(suhu[j]) } console.log(ar); // 37, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN console.log(ma); // 0, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Entonces, ¿qué debo hacer al respecto?

Calcular los valores en ar y ma parece muy dependiente el uno del otro. Para calcular ar[i] necesitas ma[i-1] y para ma[i] necesitas ar[i] . Esto debería ser un solo bucle. No puede calcular primero una matriz y luego la otra.

 var suhu = [37, 36, 39, 38, 38, 38, 40, 41, 41, 39]; var ar = [suhu[0]]; var ma = [0]; for (let i = 1; i < suhu.length; ++i) { ar[i] = 0.99 * suhu[i - 1] + 0.06 * ma[i - 1]; ma[i] = Math.abs(suhu[i] - ar[i]); } console.log(ar); console.log(ma);
 .as-console-wrapper{top:0;max-height:100%!important}

about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema es que el cálculo de ar[i] depende de ma[i-1] y ma[i] depende de ar[i] , por lo que debe calcularlos en el orden correcto en un solo bucle.

 const suhu = [37, 36, 39, 38, 38, 38, 40, 41, 41, 39]; const ar = []; const ma = []; // Calucate AR and MA together ar[0] = suhu[0] for (var i = 0; i < suhu.length; i++) { if (i > 0) ar.push(0.99 * suhu[i - 1] + 0.06 * ma[i - 1]) ma.push(Math.abs(suhu[i] - ar[i])); } console.log(ar); // [37, 36.63, 35.6778, 38.809332, 37.66855992, 37.639886404799995, // 37.641606815711995, 39.74150359105728, 40.66550978453656, 40.6100694129278] console.log(ma); // [0, 0.6300000000000026, 3.3222000000000023, 0.8093319999999977, 0.33144008000000014, // 0.36011359520000497, 2.358393184288005, 1.2584964089427189, 0.3344902154634397, 1.6100694129277997]
 .as-console-wrapper{top:0;max-height:100%!important}

Los resultados tienen una precisión de más de 2 decimales y los necesitará para calcular correctamente los siguientes valores. Sin embargo, puede cambiar la precisión una vez que se hayan calculado todos los valores.

about 4 years ago · Juan Pablo Isaza Denunciar

0

no has inicializado el ma[] al inicio y lo usaste para inicializar ar[], por lo que produce el valor de Nan.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda