var tope = 100; //Tope es la cantidad de valores que tendrá el Array
var array = new Array(); //Creamos el array
var sum = 0; //La suma de los valores
var voy = 0; //La posición en el Array
var n = 0; //La longitud del array que usaremos para evitar fallos cuando el array comienza vacío hasta que se llena
var oldDate, nowDate, diferencia, media; //Variables de fechas, etc
function llenarArray() {
for (var i=0; i < tope; i++) {array[i] = 0;} //Lo llenamos de ceros
}
llenarArray();
var perm = false; //Esto es simplemente para que el primer valor no sea 0 justo la primera vez que se llama a la función
//Iniciamos la fecha antigua
oldDate = new Date();
oldDate = oldDate.getTime();
function mediaAritmetica() {
//Tomamos la fecha actual
nowDate = new Date();
nowDate = nowDate.getTime();
if (perm === true) { //Comprobación del perm para evitar lo que en la varibale perm he explicado
diferencia = nowDate - oldDate; //Toamamos la diferencia entre los dos valores
sum = sum - array[voy] + diferencia; //La suma actual menos la posición de voy en el array más el nuevo valor
array[voy] = diferencia; //El valor de la diferencia lo metemos en el array en la posción voy
voy++; //Voy indica la posición en el array, lo cual le sumamos 1
if (voy > n) { //Cuando voy es mayor que n quiere decir que el array se está llenando
n=voy;
}
if (voy > tope - 1) { //Si voy es mayor que el tope de valores que hemos establecido voy volverá añ principio del Array
voy=0;
}
media = sum / n; //Aquí es donde calculamos la media aritmética de ese conjunto de valores que hay en el Array
console.log(array); //Mostrará el Array con los valores
console.log(media.toFixed(2)); //Mostrará la media
}
perm = true;
oldDate = nowDate; //La antigua fecha es ahora la nueva fecha
//Para realizar la prueba podemos usar timeout o windowRequestAnimationFrame
window.requestAnimationFrame(mediaAritmetica);
}
mediaAritmetica();
它不是简单地对添加值的 Array 中的一组值进行算术平均,我的意思是在不改变其长度的情况下对新值到达的 Array 进行算术平均(在这样我将不得不删除最旧的值),以更好地解释它:
我们有一个长度为 10的数组,其中全是零,我们将向其中添加新值并消除最旧的值:
var array = [0,0,0,0,0,0,0,0,0,0];
如果我们输入一个值(例如 1),它现在看起来像这样:
var array = [1,0,0,0,0,0,0,0,0,0];
如果我们现在添加 2:
var array = [1,2,0,0,0,0,0,0,0,0];
例如,如果我们有一个完整的数组:
var array = [3,5,6,7,8,9,1,2,3,4];
现在我们引入值45,它将是:
var array = [45,5,6,7,8,9,1,2,3,4];
这个数组的算术平均值是9;如果我们将56添加到最后一个 Array ,它将是:
var array = [45,56,6,7,8,9,1,2,3,4];
并且它的算术平均值将是14.1;我知道你们中的一些人会知道怎么做,而且看起来没什么特别的,但是对于开始或打算做这种计算的人来说,我觉得它非常有用。
希望有帮助!