对数组中的时间码求和,仅使用reduce



我有一个数组的时间码,它看起来像这样:["5:43", "2:33", "3:45", "0:47", "5:21", "6:56", "3:46", "5:25", "3:14", "3:31", "5:59", "3:07", "11:29", "8:57", "5:49", "5:52", "5:50", "9:13", "11:51", "7:58", "4:40", "4:45", "6:46", "7:24", "7:12", "5:23", "3:34", "8:22", "5:17", "3:10", "4:43", "19:43", "0:47", "0:47", "3:14", "3:59", "2:43", "4:17", "6:56", "3:05", "2:06", "1:59", "1:49", "3:36", "7:10", "3:44", "3:44", "4:36", "3:16", "1:10", "6:10", "2:14", "3:44", "5:05", "6:03", "12:39", "1:56", "4:04"]。我需要通过一个reduce方法对数组内的秒数求和。

Vartimer给我正确的数字列表,我需要求和。出于某种原因,它不想自己求和。如果我把计时器变量变成一个数组,并把东西推进去——它们没有索引,所以我不能减少它们。

time.reduce((sum, cur) => {
const [mins, secs] = cur.split(':');
let timer;
timer = (parseFloat(mins * 60) + parseFloat(secs));
console.log(timer);
}); 

你几乎在那里,但问题是你没有从减少回调返回任何东西。该回调的返回值将用作下一次迭代的sum

const arr = ["5:43", "2:33", "3:45", "0:47", "5:21", "6:56", "3:46", "5:25", "3:14", "3:31", "5:59", "3:07", "11:29", "8:57", "5:49", "5:52", "5:50", "9:13", "11:51", "7:58", "4:40", "4:45", "6:46", "7:24", "7:12", "5:23", "3:34", "8:22", "5:17", "3:10", "4:43", "19:43", "0:47", "0:47", "3:14", "3:59", "2:43", "4:17", "6:56", "3:05", "2:06", "1:59", "1:49", "3:36", "7:10", "3:44", "3:44", "4:36", "3:16", "1:10", "6:10", "2:14", "3:44", "5:05", "6:03", "12:39", "1:56", "4:04"]
const total = arr.reduce((ac, a) => {
let [min, secs] = a.split(':').map(Number);
return ac + secs + (min * 60)
}, 0)
console.log(total)

最新更新