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

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


当前回答

数学的力量!

X = integer to pad Y =要填充的零的个数

function zeroPad(x, y)
{
   y = Math.max(y-1,0);
   var n = (x / Math.pow(10,y)).toFixed(y);
   return n.replace('.','');  
}

其他回答

如果你使用Lodash。

Var n = 1; 警报(_。padLeft(n, 2,0));/ / 01 N = 10; 警报(_。padLeft(n, 2,0));/ / 10 < script src = " https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.min.js " > < /脚本>

如果填充数事先知道不超过某个值,还有另一种不循环的方法:

var fillZeroes = "00000000000000000000";  // max number of zero fill ever asked for in global

function zeroFill(number, width) {
    // make sure it's a string
    var input = number + "";  
    var prefix = "";
    if (input.charAt(0) === '-') {
        prefix = "-";
        input = input.slice(1);
        --width;
    }
    var fillAmt = Math.max(width - input.length, 0);
    return prefix + fillZeroes.slice(0, fillAmt) + input;
}

测试用例在这里:http://jsfiddle.net/jfriend00/N87mZ/

只是另一种解决方案,但我觉得更容易辨认。

函数zeroFill(text, size) { 而(文本。长度< size){ Text = "0" + Text; } 返回文本; }

并不是说这个问题需要更多的答案,但我认为我应该添加这个简单的lodash版本。

_。屏幕左边(6号,0号)

自ECMAScript 2017以来,我们有了padStart:

Const padding =(。1 +“”)。padStart(“0”); console.log(“- ${垫}”);

在ECMAScript 2017之前

toLocaleString:

为 n=-0.1; var res = n.toLocaleString('en', {minimumIntegerDigits:4,minimumFractionDigits:2,useGrouping:false}); console.log(res);