Javascript函数:分割后返回值
我编写了自己的JS函数,用于拆分时间值并将其返回格式化:Javascript函数:分割后返回值,javascript,arrays,Javascript,Arrays,我编写了自己的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" + secon
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语句,我可以实现这一点吗
谢谢大家。试试这个:
var hours = parseInt(time[0], 10);
hours = hours && (hours + 'h');
:
return hours || '' + minutes + "m" + seconds + "s"
诀窍是,&&
如果对第一个操作数求值为falsy(0是falsy值),则返回它的第一个操作数。然后,如果第一个操作数的计算结果不正确,则在返回|
中返回其第二个操作数。尝试以下操作:
var hours = parseInt(time[0], 10);
hours = hours && (hours + 'h');
:
return hours || '' + minutes + "m" + seconds + "s"
诀窍是,&&
如果对第一个操作数求值为falsy(0是falsy值),则返回它的第一个操作数。然后在返回中| |
如果第一个操作数的计算结果是错误的,则返回第二个操作数。如何
return (hours ? (hours + "h") : "") +
(minutes ? (minutes + "m") : "") +
seconds + "s"
??怎么样
return (hours ? (hours + "h") : "") +
(minutes ? (minutes + "m") : "") +
seconds + "s"
?我用三元运算符去掉了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';
}
希望它有意义 我用三元运算符去掉了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"
想要使它没有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"
您可以使用三元运算符执行此操作,但我不明白为什么要避免使用if
http://jsfiddle.net/QJq7B/
但我决定自己编写代码,我不确定他是如何在小时内消除0值的。我不回答这个问题吗?->这是一个不同的问题@adeneo我最终编写了我自己的函数看起来完全一样,看看我被否决的删除答案,它完全符合你的要求?你可以使用三元运算符,但是我不明白为什么你想要避免一个如果。另一个成员做了这个http://jsfiddle.net/QJq7B/
但我决定自己编写代码,我不确定他是如何在小时内消除0值的。我不回答这个问题吗?->这是一个不同的问题@adeneo我最终编写了我自己的函数它似乎完全一样,看看我被否决的删除答案,它完全符合你的要求?hours+“h”
可能永远不会出错。你编辑的代码不会放“h”
当小时数为非零时输入字符串。正在退出内容。我会去读更多关于三元运算符的内容!感谢您的输入。hours+“h”
可能永远不会出错。当小时数不为零时,您编辑的代码不会将“h”
放入字符串。正在退出。我会去读更多关于三元运算符的内容!感谢您的输入。手动操作似乎非常有用!如果还有其他的话,要除掉吗?它们的真正目的是什么(我也会继续读下去)@J.D三元运算符的行为就像if/else语句一样<代码>(条件)?(如果为真,则返回):(如果为假,则返回)实际上最好避免用三元运算符替换if/else,这里的三元运算符的解释似乎非常有用!如果还有其他的话,要除掉吗?它们的真正目的是什么(我也会继续读下去)@J.D三元运算符的行为就像if/else语句一样<代码>(条件)?(如果为真,则返回):(如果为假,则返回)实际上最好避免用三元替换if/else,这里有很好的解释,你能用伪代码解释你的答案吗。。。如果为“小时”,则检查是否有值,如果为真,则返回“(小时+“h”)。否则:“什么也不归还?但是0仍然是一个值,几乎就是这样<代码>测试?expr1:expr2
检查test
是否具有真实值。如果是,整个表达式将返回计算结果expr1
。如果不是,则返回求值的值expr2
。由于JS中的0
不是真实值(虚假值为false
、0,-0、null
、undefined
、NaN
、和”
;其他值都是真实值),这将在您关心的情况下返回一个空字符串,当hours
为零时。请您用伪代码解释一下您的答案。。。如果为“小时”,则检查是否有值,如果为真,则返回“(小时+“h”)。否则:“什么也不归还?但是0仍然是一个值,几乎就是这样<代码>测试?expr1:expr2
检查test
是否具有真实值。如果是,整个表达式将返回计算结果expr1
。如果不是,则返回求值的值expr2
。由于JS中的0
不是真实值(虚假值为false
、0,-0、null
、未定义的、NaN
、和”
;其他所有值都是真实值),因此当小时数
为零时,这将返回一个空字符串,而这正是您关心的情况。