Te doy la bienvenida a nuestra página web, ahora vas a hallar la resolución que estás buscando.
Solución:
Método abreviado para obtener la desviación estándar de un array si no te gusta un montón de código:
function getStandardDeviation (array)
const n = array.length
const mean = array.reduce((a, b) => a + b) / n
return Math.sqrt(array.map(x => Math.pow(x - mean, 2)).reduce((a, b) => a + b) / n)
Para cualquiera que busque una solución más genérica, aquí hay una función de desviación estándar agregada a Array#. La función espera ser llamada en un array de numeros
Array.prototype.stanDeviate = function()
var i,j,total = 0, mean = 0, diffSqredArr = [];
for(i=0;i
Creo que el (principal) problema está en esta línea:
v1 = parseFloat(Math.pow(temp[i]-mean),2);
Debiera ser:
v1 = Math.pow(parseFloat(temp[i])-mean),2);
Su código está tratando de usar el string en temp[i]
como un número y restar mean
de él, y luego elevarlo al cuadrado, y luego analizar el valor resultante. Necesito analizar Float antes de usarlo en un cálculo. También tienes el ,2
fuera del paréntesis de cierre para el Math.pow
llama para que tampoco te funcione la cuadratura.
También sería útil usar nombres de variables más significativos, quiero decir, por ejemplo, tiene una variable llamada "cuadrado" que contiene el resultado de una operación de raíz cuadrada.
PD: debe agregar alguna verificación de error en caso de que el usuario ingrese datos no numéricos. Compruebe que el resultado de parseFloat()
no es NaN
. Me inclinaría a hacer un bucle inicial a través de la array analizando y verificando números válidos, almacenando los números analizados en un segundo array (o escribiéndolas de nuevo a la primera array), y si alguno no es válido, envíe al usuario un mensaje de error en ese punto y deténgalo. Luego, en sus cálculos reales, no tiene que preocuparse por analizar a medida que avanza (o, en su caso, analizar nuevamente en el segundo ciclo).
Si sostienes alguna cuestión y forma de medrar nuestro reseña puedes dejar una interpretación y con placer lo analizaremos.