在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
当前回答
我经常使用这个结构来填充某个值n,已知是一个正的小数:
(offset + n + '').substr(1);
其中偏移量为10^^位。
例如,填充到5位数,其中n = 123:
(1e5 + 123 + '').substr(1); // => 00123
十六进制的版本稍微详细一些:
(0x100000 + 0x123).toString(16).substr(1); // => 00123
注1:我也喜欢@profitehlolz的解决方案,它是这个的字符串版本,使用slice()的漂亮的负索引特性。
其他回答
最新的方法要简单得多:
var number = 2
number.toLocaleString(undefined, {minimumIntegerDigits:2})
输出:“02”
我们的测试是假的,因为我的有个错别字。
zeroPad = function (num, count) {
return ((num / Math.pow(10, count)) + '').substr(2);
};
Paul的是最快的,但我认为.substr比.slice快,即使它多了一个字符;)
如果性能真的很关键(遍历数百万条记录),则可以预先生成填充字符串数组,从而避免每次调用都这样做。
时间复杂度:O(1)。 空间复杂度:O(1)。
const zeroPads = Array.from({ length: 10 }, (_, v) => '0'.repeat(v)) 函数 zeroPad(num, len) { const numStr = String(num) return (zeroPads[len - numStr.length] + numStr) }
要填充数字的末尾,使用num.toFixed
例如:
document.getElementById('el').value = amt.toFixed(2);
这是我找到的最简单的解决办法,而且很有效。
function numberPadding(n, p) {
n = n.toString();
var len = p - n.length;
if (len > 0) {
for (var i=0; i < len; i++) {
n = '0' + n;
}
}
return n;
}