我有一个像01:02:3
这样的字符串(这是一个时间),我希望以秒为单位获得总数值。所以预期产量将是3723。
const time = "1:02:3";
const timeNumeric = time.split(':').map(item => {
return Number(item)
});
function total() {
var totalTime = 0;
if (timeNumeric.length = 3) {
const num1 = timeNumeric[0] * 3600
const num2 = timeNumeric[1] * 60
const num3 = timeNumeric[2]
totalTime = num1 + num2 + timeNumeric[2]
} else if (timeNumeric.length == 2) {
const num2 = timeNumeric[1] * 60
const num3 = timeNumeric[2]
totalTime = num2 + num3
} else if (timeNumeric.length == 1) {
const num3 = timeNumeric[2]
totalTime = num3
} else {
console.log('nothing')
}
console.log(totalTime)
}
请注意,字符串中的值可能不总是3个数字,可以是2:45
或30
,然后第3个选项值不需要任何计算。
答案 0 :(得分:1)
您需要先将拆分字符串转换为数字,然后才能使用reduce函数将它们相乘。像这样:
const strNums = "01:02:3";
const multiplier = 3;
const arrayStrNums = strNums.split(':').map( item => {
return Number(item) * multiplier;
});
const total = arrayStrNums.reduce((a, b) => {
return a + b;
})
console.log(total);
答案 1 :(得分:1)
您的代码是正确的,除了当前的号码。当您使用*
JavaScript尝试转换为数字时。但是,当您使用+
时,如果两个变量之一是String,则JavaScript会尝试转换为String。
var getSeconds = function(time) {
return time.split(':').reduce(function(prev, curr) {
return prev * 60 + parseInt(curr, 10)
}, 0)
}
var total = getSeconds('01:02:03')
var total2 = getSeconds('2:34')
console.log(total, total2) // 3723 154