我写我自己的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语句删除小时?
谢谢你不错的人。
怎么样
return (hours ? (hours + "h") : "") +
(minutes ? (minutes + "m") : "") +
seconds + "s"
??
尝试这个:
var hours = parseInt(time[0], 10);
hours = hours && (hours + 'h');
:
return hours || '' + minutes + "m" + seconds + "s"
诀窍是,即&&
返回其第一操作数如果评估falsy(0是falsy值)。然后在return
如果第一操作数被评估falsy ||
返回它的第二操作数。
我摆脱了三元运算符的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';
}
希望这是有道理的!
想要做它没有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"