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

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


当前回答

我使用这个片段来获得一个五位数的表示:

(value+100000).toString().slice(-5) // "00123" with value=123

其他回答

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

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

ECMAScript 2017: 使用padStart或padEnd

'abc'.padStart(10);         // "       abc"
'abc'.padStart(10, "foo");  // "foofoofabc"
'abc'.padStart(6,"123465"); // "123abc"

更多信息:

https://github.com/tc39/proposal-string-pad-start-end https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

我真的不知道为什么,但没有人用最明显的方式去做。这是我的实现。

功能:

/** Pad a number with 0 on the left */
function zeroPad(number, digits) {
    var num = number+"";
    while(num.length < digits){
        num='0'+num;
    }
    return num;
}

原型:

Number.prototype.zeroPad=function(digits){
    var num=this+"";
    while(num.length < digits){
        num='0'+num;
    }
    return(num);
};

很简单,我看不出还有什么比这更简单的了。出于某种原因,我在这里已经看到很多次了,人们只是试图不惜一切代价避免“For”和“while”循环。使用regex可能会为这样一个微不足道的8位数填充花费更多的周期。

使用递归:

function padZero(s, n) {
    s = s.toString(); // In case someone passes a number
    return s.length >= n ? s : padZero('0' + s, n);
}

也许我太天真了,但我认为这在一行简单而有效的代码中就可以实现(对于正数):

padded = (value + Math.pow(10, total_length) + "").slice(1)

只要你保持你的长度根据你的值集(在任何零填充),这应该是可行的。

步骤如下:

10的幂与正确的0数相加[69+1000 = 1069] 转换为字符串+"" [1069 => "1069"] 对第一个1进行切片,这是第一个乘法的结果["1069" => "069"]

对于自然列表(文件,dirs…)是非常有用的。