Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

202
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda