3 回答

TA贡献1982条经验 获得超2个赞
您需要在 reduce 之后添加零,因为 reduce 仍在计算时间。
我.map
在计算后添加了一个以获取每个时间值,然后检查值是否小于 10:
.map((v) => (v < 10) ? v = "0" + v : v)
let testOne = ["02:00:00", "01:00:00", "01:00:00"]
function test() {
let calTotalHours = testOne.map(t => t.split(':')).reduce((arr, item, index) => {
arr[0] += parseFloat(item[0]);
arr[1] += parseFloat(item[1]);
arr[2] += parseFloat(item[2]);
if (arr[2] >= 60) {
arr[1]++;
arr[2] %= 60;
}
if (arr[1] >= 60) {
arr[0]++;
arr[1] %= 60;
}
return arr;
}, [0, 0, 0]).map((v) => (v < 10) ? v = "0" + v : v).join(':')
console.log(calTotalHours)
}
test()

TA贡献1842条经验 获得超21个赞
你可以做这样的事情来获得你想要的padStart()功能
let testOne = ["02:00:00", "01:00:00", "01:00:00"]
function test() {
let calTotalHours = testOne.map(t => t.split(':')).reduce((arr, item, index) => {
arr[0] += parseFloat(item[0]);
arr[1] += parseFloat(item[1]);
arr[2] += parseFloat(item[2]);
if (arr[2] >= 60) {
arr[1]++;
arr[2] %= 60;
}
if (arr[1] >= 60) {
arr[0]++;
arr[1] %= 60;
}
return arr;
}, [0, 0, 0])
.map((num) => num.toString().padStart(2, 0)) //add 0 to each value here if they are less than 10
.join(':');
console.log(calTotalHours);
}
test();

TA贡献1790条经验 获得超9个赞
您可以在加入阵列之前尝试使用 .padStart() on:
.map(num => num.toString().padStart(2, '0'))
这将填充长度小于 2 的前导 0
添加回答
举报