Javascript 秒表jQuery,计算平均值并显示
我正在制作秒表,现在它可以工作了,但我想我可以计算出人们的平均时间。例如,假设我在一个Javascript 秒表jQuery,计算平均值并显示,javascript,jquery,arrays,time,average,Javascript,Jquery,Arrays,Time,Average,我正在制作秒表,现在它可以工作了,但我想我可以计算出人们的平均时间。例如,假设我在一个数组中有5次,如下所示:得分=[“00:32:192”,“00:30:126”,“00:31:542”,“00:25:236”,“00:36:320”]。你现在可能会想:这到底是什么?时间单位是:分:秒:毫秒。使用for循环将阵列打印到屏幕上 jQuery var int, ms=0, s=0, m=0; $('#swatch').text("00:00:00"); funct
数组中有5次,如下所示:得分=[“00:32:192”,“00:30:126”,“00:31:542”,“00:25:236”,“00:36:320”]代码>。你现在可能会想:这到底是什么?时间单位是:分:秒:毫秒。使用for
循环将阵列打印到屏幕上
jQuery
var int,
ms=0,
s=0,
m=0;
$('#swatch').text("00:00:00");
function swatch(){
var startTime = new Date().getTime();
int = setInterval(function(){
var time = new Date().getTime();
var dif = time-startTime;
ms= dif%1000;
s = Math.floor(dif/1000)%60;
m = Math.floor(dif/1000/60)%60;
if(ms < 10) {
ms = '0'+ms;
}
if(s < 10) {
s = '0'+s;
}
if(m < 10) {
m = '0'+m;
}
$('#swatch').text(m+':'+s+':'+ ms);
},1);
}
var scores= [];
$(document).on('keydown', function(e){
var result = $('#swatch').text();
var i = parseInt(scores.length);
if(e.keyCode == 32 && !int){
swatch();
} else if (e.keyCode == 32){
clearInterval(int);
int=0;
scores.push(result);
$('#score ol').append('<li>' + scores[i] + '</li>');
if(scores.length >= 5) {
$('#ao5').html("ao5: 00:27:43");
$('#ao5').slideDown(500);
}
if (scores.length >= 12) {
$('#ao12').html("ao12: 00:27:43");
$('#ao12').slideDown(500);
}
}
});
我想知道,如果数组有5个不同的时间值(如上面我向您展示数组格式的示例),它会在屏幕上输出平均值。正如你们所看到的,我只是为自己画了一幅图,但我想要一个计算它的函数。我在jQuery中构建它是因为计时器在这里比在JS中工作得更好
如果你们中的一些人能给我举个例子,然后用其中的函数重新编写我的代码,那就太好了。我真的为此苦苦挣扎了好几天,想知道如何计算5和/或12的平均值
谢谢。请注意,我下面提供的代码并不直接依赖于JQuery或任何库。你给它一个“时间字符串”数组,它会给你一个平均值。您可以使用您选择的任何库来获取该字符串数组
首先,您需要一个实用程序函数,它可以将时间字符串分解为其组成部分:
var str_to_time = function(time_str) {
var pieces =time_str.split(':');
return {
minutes: parseInt(pieces[0], 10),
seconds: parseInt(pieces[1], 10),
milliseconds: parseInt(pieces[2], 10)
};
};
现在是一个将时间字符串数组转换为时间数组的函数:
var str_array_to_time_array = function(str_array) {
return str_array.map(str_to_time);
};
最后,将所有这些值相加求平均值的方法:
var average_time = function(time_array) {
var minutes = 0;
var seconds = 0;
var milliseconds = 0;
for (var i = 0; i < time_array.length; i++) {
minutes += time_array[i].minutes;
seconds += time_array[i].seconds;
milliseconds += time_array[i].milliseconds;
}
minutes /= time_array.length;
seconds /= time_array.length;
milliseconds /= time_array.length;
// Minutes and seconds may be fractional. Carry the fractions down.
seconds += (minutes - Math.floor(minutes)) * 60;
minutes = Math.floor(minutes);
milliseconds += (seconds - Math.floor(seconds)) * 1000;
seconds = Math.floor(seconds);
milliseconds = Math.round(milliseconds);
// if milliseconds is >= 1000, add a second.
seconds += Math.floor(milliseconds / 1000);
milliseconds %= 1000;
// If seconds >= 60, add a minute.
minutes += Math.floor(seconds / 60);
seconds %= 60;
return {
minutes: minutes,
seconds: seconds,
milliseconds: milliseconds
};
};
啊,谢谢你的病人,也谢谢你花时间写这篇文章。现在可以了。我得找出你的密码,但我搞定了。谢谢
var average_time = function(time_array) {
var minutes = 0;
var seconds = 0;
var milliseconds = 0;
for (var i = 0; i < time_array.length; i++) {
minutes += time_array[i].minutes;
seconds += time_array[i].seconds;
milliseconds += time_array[i].milliseconds;
}
minutes /= time_array.length;
seconds /= time_array.length;
milliseconds /= time_array.length;
// Minutes and seconds may be fractional. Carry the fractions down.
seconds += (minutes - Math.floor(minutes)) * 60;
minutes = Math.floor(minutes);
milliseconds += (seconds - Math.floor(seconds)) * 1000;
seconds = Math.floor(seconds);
milliseconds = Math.round(milliseconds);
// if milliseconds is >= 1000, add a second.
seconds += Math.floor(milliseconds / 1000);
milliseconds %= 1000;
// If seconds >= 60, add a minute.
minutes += Math.floor(seconds / 60);
seconds %= 60;
return {
minutes: minutes,
seconds: seconds,
milliseconds: milliseconds
};
};
average_time(str_array_to_time_array(['33:23:354', '34:00:32']))
// Object {minutes: 33, seconds: 41, milliseconds: 693}