在 JavaScript 中用前导零填充数字

新手上路,请多包涵

在 JavaScript 中,我需要填充。

例如,如果我有数字 9,它将是“0009”。如果我有一个数字,比如 10,它将是“0010”。注意它总是包含四个数字。

做到这一点的一种方法是将数字减去 4 以获得我需要输入的 0 的数量。

有没有更巧妙的方法来做到这一点?

原文由 Nate Pet 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 573
1 个回答

ES2017 更新

您可以使用内置的 String.prototype.padStart()

 n = 9;
String(n).padStart(4, '0'); // '0009'

n = 10;
String(n).padStart(4, '0'); // '0010'


到目前为止,还没有太多“圆滑”的事情发生:

 function pad(n, width, z) {
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}

当你用一个数字初始化一个数组时,它会创建一个数组,并将 length 设置为该值,这样该数组看起来包含那么多 undefined 元素。尽管一些 Array 实例方法会跳过没有值的数组元素,但 .join() 不会,或者至少不会完全跳过;它将它们视为它们的值是空字符串。因此,您会在每个数组元素之间获得零字符(或任何“z”)的副本;这就是为什么里面有一个 + 1 的原因。

用法示例:

 pad(10, 4);      // 0010
pad(9, 4);       // 0009
pad(123, 4);     // 0123

pad(10, 4, '-'); // --10

原文由 Pointy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题