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>
这是我一直在做的反应测试项目 显示您点击随机出现的方框或圆圈的速度。
我在添加两个功能时遇到了困难:向用户显示他们尝试了多少次的能力, 以及他们的平均速度基于他们所有尝试次数的总和(以秒为单位)除以他们当前的总尝试次数。
我想到了几种不同的方法来获取尝试次数:要么计算盒子出现的次数,要么从最佳方法开始 记录每次尝试的秒数似乎是将这些秒数推入一个数组并对它们求和; 获取该数组的长度也会给出尝试次数。
我卡住的两个地方是试图将时间存储到数组中并对它们求和; 加上尝试的次数并除以该总和。
我对此进行了详细的思考和研究,如果我的任何尝试没有产生预期的结果,都可能会令人困惑。
这是有效的代码:
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>