我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。

JavaScript中有数字格式化器吗?


当前回答

为ES6箭头函数更新(几乎所有现代浏览器都支持,参见CanIUse)

const formatNumber = n => ("0" + n).slice(-2);

其他回答

@Lifehack的回答对我很有用;我想我们可以用一行来表示正数

 String(input).padStart(2, '0');

这里有一个简单的递归解决方案,适用于任何数量的数字。

function numToNDigitStr(num, n)
{
    if(num >=  Math.pow(10, n - 1)) { return num; }
    return "0" + numToNDigitStr(num, n-1);
}

如果数字大于9,则将数字转换为字符串(一致性)。否则,加一个零。

function n(n){
    return n > 9 ? "" + n: "0" + n;
}

n( 9); //Returns "09"
n(10); //Returns "10"
n(999);//Returns "999"

or

function zpad(n,l){
   return rep(l-n.toString().length, '0') + n.toString();
}

with

function rep(len, chr) { 
   return new Array(len+1).join(chr);
}

在任意数字中使用toLocaleString()方法。因此,对于数字6,如下所示,您可以得到所需的结果。

(6).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false})

将生成字符串'06'。