JavaScript:如何存储、更新和计算一组用户生成的时间中的平均值和总值(以秒为单位)

JavaScript: How to store, update, and calculate the average and total number of values in a set of user-generated times in seconds

这是我一直在做的反应测试项目 显示您点击随机出现的方框或圆圈的速度。

我在添加两个功能时遇到了困难:向用户显示他们尝试了多少次的能力, 以及他们的平均速度基于他们所有尝试次数的总和(以秒为单位)除以他们当前的总尝试次数。

我想到了几种不同的方法来获取尝试次数:要么计算盒子出现的次数,要么从最佳方法开始 记录每次尝试的秒数似乎是将这些秒数推入一个数组并对它们求和; 获取该数组的长度也会给出尝试次数。

我卡住的两个地方是试图将时间存储到数组中并对它们求和; 加上尝试的次数并除以该总和。

我对此进行了详细的思考和研究,如果我的任何尝试没有产生预期的结果,都可能会令人困惑。

这是有效的代码:

    createdTime=Date.now();
        }, time);
        }
        document.getElementById("box").onclick=function() 
    {
        clickedTime=Date.now();
        reactionTime=(clickedTime-createdTime)/1000;
        /*I'm trying to take make an array of reaction 
    times. 
        here is my last attempt:
            recordTime = [];
            sumTime = recordTime.push(reactionTime);
            console.log(recordtime);  
    

它只在控制台中将 recordTime 数组显示为 [undefined] 一次,并且不会用新的反应时间更新数组。我期望/我想要的是:

 first try/iteration>>box appears>>User Clicks>>reactionTime is measured and calculated>>recordTime: recordTime = [0.530]; 
second try/iteration>>box appears>>User Clicks>>reactionTime is measured and calculated>>recordTime: recordTime = [0.530, 0.511];
third try/iteration>>box appears>>User Clicks>>reactionTime is measured and calculated>>recordTime: recordTime = [0.530, 0.511, 0.353];
fourth try/iteration>>box appears>>User Clicks>>reactionTime is measured and calculated>>recordTime: recordTime = [0.530, 
 0.511, 0.353,...];  

其次是:

  sum(recordTime)/(recordTime.length);
  (put recordTime result into innerHTML for desired element 
  id.)
  (same for recordTime.length).

我试过把它放在里面和外面 它上面的代码,以及 none 我的尝试让我可以将 reactionTime 中的秒数添加到数组中。

另一种选择是在 HTML 页面上添加“总秒数”跨度或元素,并将当前时间简单地添加到总时间中。 但是,关于如何让 javaScript “记住”,这仍然让我处于大致相同的情况 以前的次数,如何计算尝试的次数,以及如何平均。

感谢 A_A 回答我的问题。我只需要一个 const Array=[0];存储用户在点击时生成的值。谢谢,A_A!

如果要向数组添加元素,则不应再次初始化它 (reactionTimes = []),因为这会使它变空。因此一开始就初始化它,然后在它上面调用push

const reactionTimes = [];
let startingTime;

function start() {
  startingTime = Date.now();
}

function stop() {
  const reactionTime = Date.now() - startingTime;
  reactionTimes.push(reactionTime);
  console.log(reactionTimes);
}
<button id="start" onclick=start()>Start</button>
<button id="stop" onclick=stop()>Stop</button>