0

我的最终功能。

var timeToString = function(time)
{
    if (time <= 0)
    {
        return '0';
    }
    else
    {
        var s = '';
        var d;

        var dateObj = { '_86400' : 'วัน', '_3600' : 'ชั่วโมง', '_60' : 'นาที', '_1' : 'วินาที' };

        for ( key in dateObj )
        {
            console.log( time + ' ' + key )

            var suffix = dateObj[key];
            var totaltime = key;
            totaltime = totaltime.substr(1)

            if ( time >= totaltime )
            {
                time -= d = time - time % totaltime;
                s += ( ( d / totaltime) + ' ' + suffix + ' ');
            }
        }
    }
    return s;
}

document.write( timeToString(79) )

结果:1 นาที 19 วินาที

通过为我的对象的键值添加前缀来修复它,我的修复工作很好。

这是我的第一个代码

var timeToString = function(time)
{
    if (time <= 0)
    {
        return '0';
    }
    else
    {
        var s = '';
        var d;

        var dateObj = { '86400' : 'วัน', '3600' : 'ชั่วโมง', '60' : 'นาที', '1' : 'วินาที' };

        for ( key in dateObj )
        {
            var suffix = dateObj[key];
            var totaltime = parseInt(key);

            if ( time >= totaltime )
            {
                time -= d = time - time % totaltime;
                s += ( ( d / totaltime) + ' ' + suffix + ' ');
            }
        }
    }
    return s;
}

结果:79 วินาที

我不需要那样的显示。

结果:1 นาที 19 วินาที

这是正确的。

看看两个函数之间“dateObj”的区别。

如果键的类型==数字,如何在for循环中修复对象重新排序

4

2 回答 2

0

在我看来问题实际上出在

 totaltime = totaltime.substr(1)

你改成

var totaltime = parseInt(key);

我不知道你想在这里比较什么,打赌这似乎是你做的两个完全不同的比较。确保您要比较什么以及如何进行比较。它是什么time,谁寄的?你想如何比较整数和字符串?等等

于 2013-09-12T09:20:35.963 回答
0

据我了解,您需要格式化会议记录。试试这个例子:

function formatTime(minutes) {
        var hh = Math.floor(minutes/60);
        var mm = minutes%60;
        var result = "";
        if (hh > 0)
            result += hh + " hours ";
        if (mm > 0)
            result += mm + " minutes";
        return result;
    }

然后调用:

console.log(formatTime(219));
// 3 hours 39 minutes
于 2013-09-12T08:57:00.510 回答