秒之间的Javascript逗号

Posted

技术标签:

【中文标题】秒之间的Javascript逗号【英文标题】:Javascript comma between seconds 【发布时间】:2016-06-09 09:39:01 【问题描述】:

我正在尝试解决这个问题,但我不知道我需要从哪里开始。我使用计时器作为横幅来玩游戏,计时器以秒为单位,有 4 位数字。现在,我想在秒之间有一个逗号,所以它看起来像这样:13,80 而不是这个:1380。我怎样才能确保秒中有逗号?

这是我的代码:

var x = new clsStopwatch();
var $time;
var clocktimer;

function pad(num, size) 
    var s = "0000" + num;
    return s.substr(s.length - size);


function formatTime(time) 
    var s = ms = 0;
    var newTime = '';

    time = time % (60 * 60 * 1000);
    m = Math.floor( time / (60 * 1000) );
    time = time % (24 * 1000);
    s = Math.floor( time / 45 + 3800);

     newTime =  pad(s,4) ;
         return newTime;

【问题讨论】:

什么是 13,80? s、ms、time、m 还是 newTime? pad() 是什么? 【参考方案1】:

这样使用:

var str = 1234;
console.log(str.substr(0,2)+','+str.substr(2)); //will print 12,34

你的代码会变成:

function pad(num, size) 
    var s = "0000" + num;
    var str = s.substr(s.length - size);
    return str.substr(0,2)+','+str.substr(2);

【讨论】:

在你的功能垫内(num, size) var s = "0000" + num;返回 s.substr(s.length - size); ?? 很高兴听到这个消息 :) !【参考方案2】:
var myNumber = 123;
var myArray = myNumber.toString().split(""); // ["1", "2", "3"]
while (myArray.length < 4) 
    myArray.unshift("0"); // ["0", "1", "2", "3"];

myArray.splice(2, 0, ","); // second position, take none out, insert comma
// ["0, "1", ",", "2", "3"];
console.log(myArray.join("")); // myArray.join("") === "01,23"

【讨论】:

unshift()shift()push() / pop() 相同。 slice()splice() 在几乎所有方面都是相反的。不过,您绝对应该检查所有数组函数,我的大多数面试问题都需要数组,尤其是作为队列或堆栈。字符串是原始的,数组可以修改内容,并且数组的基本函数是用 C 编写的,因此它们通常很快。 shift unshift 较慢,因为您编辑所有数字的索引,它是 N 阶,但索引使数组比对象更快【参考方案3】:

不是最优雅的解决方案,但它有效

//takes a number
//e.g. 9104 returns 91,04
function addComma(number)
    var frm = String(number);
    return number > 99 ? frm.substring(0, frm.length-2) + ',' + frm.substring(frm.length-2, frm.length) : "0," + frm

【讨论】:

以上是关于秒之间的Javascript逗号的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript基本资料

javascript 如何截取两个逗号之间的字符串

如何删除逗号并使用按钮刷新 JavaScript?

JavaScrip笔记心得(持续更新)

JavaScrip笔记心得(持续更新)

JavaScrip笔记心得(持续更新)