This question already has answers here:
How to find the sum of an array of numbers
                                
                                    (41个回答)
                                
                        
                2年前关闭。
            
        

我有一个总计毫秒数的数组。我已经尝试过array.reduce并使用一个for循环,但是当我对其进行控制台或在网站上使用时,得到的却是胡言乱语。如果我总结出毫秒数,我可以将它们转换为秒,如果需要,还可以转换为分钟。

码:

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


可选代码:

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的商进行四舍五入。
余数是剩余的毫秒数。


片段:



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";

<div id = "score"></div>

07-24 20:29