关于javascript:求和毫秒数组

Sum an array of milliseconds

本问题已经有最佳答案,请猛点这里访问。

我有一个毫秒的数组,我想要总共。 我已经尝试过array.reduce并使用for-loop但是当我在网站上安装或使用时,我得到的只是完全乱码。 如果我得到总和的毫秒数,我可以将它们转换为秒,如果需要,还可以转换为几分钟。

码:

1
2
3
4
5
6
7
8
window.timeArray = [2493, 2109, 4424, 1971, 3411, 1834, 2418]

let totalTimeSum = 0
for (let i = 0; i < window.timeArray.length; i++) {
  totalTimeSum += parseInt(window.timeArray[i])
}
document.querySelector('#score').innerText += totalTimeSum  
// 1866018660, should be 15249 - 15 sec 249 millisec

可选代码:

1
2
3
4
let totalTime = (sum, value) => sum + value
let totalTimeSum = window.timeArray.reduce(totalTime)
document.querySelector('#score').innerText += totalTimeSum  
// 1866018660, should be 15249 - 15 sec 249 millisec


为了完成您的需要,您可以执行以下操作:

  • 您可以使用Array.prototype.reduce来计算数组元素的总和。

  • 然后,要计算秒数,请向下舍入sum除以1000的商。

  • 余数是剩余的毫秒数。

  • 片段:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    var
      /* Define the array. */
      timeArray = [2493, 2109, 4424, 1971, 3411, 1834, 2418],
     
      /* Calculate the sum. */
      sum = timeArray.reduce((previous, current) => previous + current, 0),
     
      /* Calculate the seconds. */
      seconds = Math.floor(sum / 1000),
     
      /* Calculate the milliseconds. */
      milliseconds = sum % 1000;

    /* Set the value as text to the score element. */
    document.querySelector("#score").innerText = seconds +"s" + milliseconds +"ms";
    1