Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

210
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!