对毫秒数组求和[重复]

Posted

技术标签:

【中文标题】对毫秒数组求和[重复]【英文标题】:Sum an array of milliseconds [duplicate] 【发布时间】:2018-05-17 20:00:20 【问题描述】:

我有一个我想要的毫秒数组。我已经尝试了 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

【问题讨论】:

为什么parseInt 用于数字,window 对象和+= 用于innerhtml @NinaScholz 我有一个 Div,我想在其中添加时间,因此 += 到 InnerText。至于其他的我是从网上得到的想法...... 另外,你怎么会是 15249?这些数字的总和 18660 @TimothyGroote 我在计算器上添加了它们,可能漏掉了一个数字,抱歉。 【参考方案1】:

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

    您可以使用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";
&lt;div id = "score"&gt;&lt;/div&gt;

【讨论】:

以上是关于对毫秒数组求和[重复]的主要内容,如果未能解决你的问题,请参考以下文章

只删除一次重复值,然后对数组求和

如何用特定键对数组值求和[重复]

如何对重复数据的数组值求和

使用 Javascript 使用 for 循环对数组中的数字求和 [重复]

唯一的重复元素

对具有重复列的多行求和 pandas [重复]