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

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


当前回答

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

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

其他回答

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

这一种不太本土,但可能是最快的…

zeroPad = function (num, count) {
    var pad = (num + '').length - count;
    while(--pad > -1) {
        num = '0' + num;
    }
    return num;
};

简单的数学运算就可以得到一个单行函数:

function zeroFill( number, width ) {
  return Array(width - parseInt(Math.log(number)/Math.LN10) ).join('0') + number;
}

这是假设number是一个不大于width的整数。如果调用例程不能保证,函数将需要进行一些检查:

function zeroFill( number, width ) {
    var n = width - parseInt(Math.log(number)/Math.LN10);
    return (n < 0) ? '' + number : Array(n).join('0') + number;
}

这是我想出的一个快速函数。如果有人有更简单的方法,欢迎分享!

function zerofill(number, length) {
    // Setup
    var result = number.toString();
    var pad = length - result.length;

    while(pad > 0) {
        result = '0' + result;
        pad--;
    }

    return result;
}

快速而肮脏的方式:

y = (new Array(count + 1 - x.toString().length)).join('0') + x;

当x = 5 count = 6时y = "000005"