在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?

注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。


当前回答

function uint_zerofill(num, width) {
    var pad = ''; num += '';
    for (var i = num.length; i < width; i++)
        pad += '0';
    return pad + num;
}

其他回答

如果npm在你的环境中可用,可以使用一些现成的包:www.npmjs.com/browse/keyword/zeropad。

我喜欢零填充。

安装

$ npm install zero-fill

使用

var zeroFill = require('zero-fill')

zeroFill(4, 1)      // '0001' 
zeroFill(4, 1, '#') // '###1' custom padding
zeroFill(4)(1)      // '0001' partials

在所有现代浏览器中都可以使用

numberStr.padStart(numberLength, "0");

函数 zeroFill(num, numLength) { var numberStr = num.toString(); 返回 numberStr.padStart(numLength, “0”); } var 数 = [0, 1, 12, 123, 1234, 12345]; 数字.forEach( 函数(数字) { var numString = num.toString(); var ppadNum = zeroFill(numString, 5); console.log(填充数字); } );

这里是MDN参考https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

最新的方法要简单得多:

var number = 2
number.toLocaleString(undefined, {minimumIntegerDigits:2})

输出:“02”

post,如果这是你正在寻找的,将剩余的时间以毫秒为单位转换为字符串,如00:04:21

function showTimeRemaining(remain){
  minute = 60 * 1000;
  hour = 60 * minute;
  //
  hrs = Math.floor(remain / hour);
  remain -= hrs * hour;
  mins = Math.floor(remain / minute);
  remain -= mins * minute;
  secs = Math.floor(remain / 1000);
  timeRemaining = hrs.toString().padStart(2, '0') + ":" + mins.toString().padStart(2, '0') + ":" + secs.toString().padStart(2, '0');
  return timeRemaining;
}

不幸的是,对于这个问题,有很多不必要的复杂建议,通常涉及编写自己的函数来进行数学运算或字符串操作或调用第三方实用程序。但是,在基本JavaScript库中有一种标准的方法,只需一行代码就可以做到这一点。将这一行代码打包到一个函数中可能是值得的,以避免必须指定您永远不想更改的参数,如本地名称或样式。

var amount = 5;

var text = amount.toLocaleString('en-US',
{
    style: 'decimal',
    minimumIntegerDigits: 3,
    useGrouping: false
});

这将为文本生成值“005”。还可以使用Number的toLocaleString函数将零填充到小数点的右侧。

var amount = 5;

var text = amount.toLocaleString('en-US',
{
    style: 'decimal',
    minimumFractionDigits: 2,
    useGrouping: false
});

这将为文本生成值“5.00”。将useGrouping更改为true以使用逗号分隔千位。

请注意,使用带有locale和options参数的toLocaleString()在ECMA-402中是单独标准化的,而不是在ECMAScript中。到目前为止,一些浏览器只实现了基本的支持,即toLocaleString()可能会忽略任何参数。

完整的示例