我编写了自己的JS函数,它拆分时间值并将其返回格式化:
function formatTime(a) {
var time = a.split(":");
var hours = parseInt(time[0], 10);
var minutes = parseInt(time[1], 10);
var seconds = parseInt(time[2], 10);
return hours + "h" + minutes + "m" + seconds + "s"
}
myTime = "00:38:51";
formatTime(myTime);
结果是0h38m51s
,这很好。但是,现在我想删除设置为0的小时。我可以在没有if语句的情况下实现这一点吗?
谢谢你们好心人。
答案 0 :(得分:2)
试试这个:
var hours = parseInt(time[0], 10);
hours = hours && (hours + 'h');
:
return hours || '' + minutes + "m" + seconds + "s"
诀窍是,&&
返回其第一个操作数,如果它被评估为falsy(0是一个假值)。然后在return
||
中返回第二个操作数,如果第一个操作数被评估为falsy。
答案 1 :(得分:2)
怎么样
return (hours ? (hours + "h") : "") +
(minutes ? (minutes + "m") : "") +
seconds + "s"
...
答案 2 :(得分:1)
我用三元运算符摆脱了0h:
t[i] = parseInt(t[i]) == 0 ? '' : parseInt(t[i]) + s[i + s.length - t.length];
与以下内容相同:
if(parseInt(time[0], 10) == 0) {
time[0] = '';
} else {
time[0] = time[0] + 'h';
}
希望它有意义!
答案 3 :(得分:1)
想要没有if
条件,显式或三元运算符吗?有可能:
function formatTime(a) {
var time = a.split(/:/),
formatted = '', val,
units = ['h', 'm', 's'];
while (time.length && (val = parseInt(time.pop(), 10))) {
formatted = val + units.pop() + formatted;
}
return formatted;
}
formatTime('00:38:51'); // "38m51s"
formatTime('02:38:51'); // "2h38m51s"