javascript中的平均计数器速度

时间:2014-02-02 13:53:29

标签: javascript counter average

我有一个以不规则的速度向上计数的值。此速度可在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);
        }

1 个答案:

答案 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];