我有一个以不规则的速度向上计数的值。此速度可在3次点击/秒和0.2次点击/秒之间变化。
我需要根据最近5秒显示当前的平均计数速度。
我在获得总体平均值或过去5秒内的平均值方面没有任何问题,但每5秒钟就会更新一次。我需要的是让这个值不断更新(比如每0.2秒)并且不断重新计算。有人知道如何实现这一目标吗?
计数器是随机速度增加的值。
window.onload = function(){
window.setInterval(average(), 500);
}
var queue = [];
var times = [];
var ts;
var maxage = 3000;
function average()
{
// add to queue
ts = new Date().getTime();
queue.push(counter);
times.push(ts);
if(times[0] - ts > maxage) {
queue.shift();
times.shift();
}
// read from queue
ts = new Date().getTime();
while(times[0] - ts > maxage) {
queue.shift();
times.shift();
}
var result;
result = (counter - queue[0])/3;
//g.refresh(result);
document.getElementById('res').innerHTML =("<font size='150'>speed " + queue[0] + "</font>");
window.setInterval(average(), 500);
}
答案 0 :(得分:0)
普通(长度限制队列):
var queue = [];
// add to queue
queue.push(val);
if(queue.length > maxlen) queue.shift;
// read from queue
val = queue[0];
年龄限制队列:
var queue = [];
var times = [];
var ts;
// add to queue
ts = new Date().getTime();
queue.push(val);
times.push(ts);
if(times[0] - ts > maxage) {
queue.shift();
times.shift();
}
// read from queue
ts = new Date().getTime();
while(times[0] - ts > maxage) {
queue.shift();
times.shift();
}
val = queue[0];