我正在对Coderbyte进行挑战,如果对我的问题有任何建议,我将不胜感激:
我知道有一种更简单的方法可以解决这个问题(我后来发现):
function TimeConvert(num) {
var hours = Math.floor(num / 60);
var minutes = num % 60;
return hours + ":" + minutes;
}
...所以TimeConvert(123);将是2:3
我知道我的答案更复杂,但为什么我试图回答这个问题的方式不起作用?我错过了什么?对于输入的任何数字,它只返回0:00:
function TimeConvert(num) {
var hours=0;
var minutes=0;
for(var i=0; i<=num; i+=60) {//loop through number every 60
if(num[i]>=60) { //for every 60 add 1 hour
hours+=1;
}else if(num[i]<60){
minutes=num[i];
}
}
var newMinute=0;
if (minutes<10){
newMinutes="0"+minutes;
}else if(minutes>10){
newMinutes=minutes;
}
return(hours + ":" + newMinutes);
}
谢谢你们!^^
答案 0 :(得分:2)
你为什么要num[i]>=60
?您需要检查的是num>=60
和num<60
。 num[i]
将始终为未定义的值,num不是字符串。 (如果它是一个字符串,则num [i]将打印与该索引对应的字符。)因此,您需要比较num
而不是num[i]
。
function TimeConvert(num) {
var hours=0;
var minutes=0;
var times = num;
for(var i=0; i<times; i+=60) {//loop through number every 60
if(num>=60) { //for every 60 add 1 hour
hours+=1;
num -= 60;
}else if(num<60){
minutes=num;
}
}
var newMinute=0;
if (minutes<10){
newMinutes="0"+minutes;
}else if(minutes>10){
newMinutes=minutes;
}
return(hours + ":" + newMinutes);
}
console.log(TimeConvert(123));
答案 1 :(得分:0)
谢谢!我实际上找到了解决这个问题的两种方法。首先,我应该迭代1而不是60,并且在第一个if语句中,我需要为每次迭代减去60,如下所示:
function TimeConvert(num) {
var hours=0;
var minutes=0;
for(var i=0; i<=num; i++) {
if(num>=60) { //for every 60 add 1 hour
hours+=1;
num-=60;//makes sure that the loop goes every 60
}else if(num<60){
minutes=num;
}
}
//下面没有必要为Coderbyte添加造型的原因。第二个答案相同
var newMinute=0;
if (minutes<10){
newMinutes="0"+minutes;
}else if(minutes>10){
newMinutes=minutes;
}
//写分钟而不是newMinutes(对于Coderbyte)。第二个答案也一样。
return(hours + ":" + newMinutes);
}
我想通过while循环来解决这个问题:
function TimeConvert(num) {
var hours=0;
var minutes=0;
var newMinutes=0;
while(num>=60) {
hours+=1;
num-=60;
}
if(num<60){
minutes=num;
}
if (minutes<10){
newMinutes="0"+minutes;
}else if(minutes>10){
newMinutes=minutes;
}
return(hours + ":" + newMinutes);
}
答案 2 :(得分:0)
除了Template Literals以外,您还可以为单行return语句添加ES6 Math.floor()。
function TimeConvert(num) {
return `${Math.floor(num/60)}:${num%60}`;
}