【问题标题】:JavaScript average calculator [closed]JavaScript平均计算器[关闭]
【发布时间】:2015-01-25 07:19:40
【问题描述】:

我想知道如何创建一个函数来记录最近的 10 个 Date.now 命令,然后将它们转换为平均值。然后我想把它放到一个侧边栏里,让它有点像记分牌。 http://jsfiddle.net/eh5dxyp4/ 。提前致谢

  clickedTime=Date.now();

  reactionTime=(clickedTime-createdTime)/1000;

  document.getElementById("time").innerHTML=reactionTime;

  this.style.display="none";

  makeBox();

 }

 makeBox();`

【问题讨论】:

  • 你能把它做成一个 jsfiddle.net。也删除一些空白行可能会有所帮助

标签: javascript average calculator


【解决方案1】:

您已经展示了相当多的代码,这些代码似乎与您问题的实际数学部分无关。我将提供一种方法来完成这部分:

记录最近的 10 个 Date.now 命令,然后将它们变成平均值

创建一个数组:

var recent = [];

还有一个向该数组添加值但也确保其中最多只有十个项目的函数:

var recentLimit = 10;
function addRecentItem(item) {
    recent.push(item); // add to end of array
    if (recent.length > recentLimit)
       recent.shift(); // remove from start of array
}

那么你只需要一个函数来计算平均值:

function getRecentAverage() {
    var i,
        sum = 0;
    for (i = 0; i < recent.length; i++)
        sum += recent[i];
    return sum / recent.length;
}

因此,无论您在代码中生成Date.now 对象的哪个位置,您都可以简单地将其添加到recent 列表中:

addRecentItem(yourValueHere);

然后得到当前平均值:

console.log( getRecentAverage() );

就您的记分牌概念而言,您只需要一个函数来遍历 recent 数组中的任何内容并创建适当的 html 元素(例如 li 元素)。

【讨论】:

  • 您好 nnnnnnn 感谢您的回答,但我仍然不明白如何使用您的代码来平均最近 10 次反应时间,当我查看 chrome 中的 javascript 日志时,它会记录每个反应时间而不是只是最新的 10。我对 javascipt 相当陌生,所以如果我弄错了,我很抱歉。谢谢。
  • 嗨。不,我的代码只保留传递给我的 addRecentItem() 函数的最后 10 个值。发帖前我确实测试过,但我不确定你是如何使用它的......
【解决方案2】:

在计算它的函数之外的某处添加var reactionTimes=[];,然后使用

var reactionTime = (clickedTime-createdTime)/1000;
reactionTimes.push(reactionTime);
document.getElementById("time").innerHTML=reactionTime;
if (reactionTimes.length==10) {
  var average = reactionTimes.reduce(function(sum, a) { return sum + a },0)/(reactionTimes.length!=0?reactionTimes.length:1);
  reactionTimes.pop(); // make ready for a new 10th value
  document.getElementById("average").innerHTML=average;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2017-01-17
    • 1970-01-01
    • 2021-07-05
    相关资源
    最近更新 更多