如何在Javascript中将数字转换为字符串时保留前导零?

3

我有一个由数字组成的数组,其中一些数字有前导零。如何将它们转换为字符串而不丢失前导零?

var array = [10, 00002, 30, 400, 5000];
array[1].toString; // would be 2 instead of 0002 as JS drops leading zeros

我查看了其他的解决方案 (JavaScript 保留前导零的数字, JavaScript: 保留数字中的前导零JavaScript 保留前导零的数字),它们都建议将数字转换为字符串。

但在我的情况下,数组中的数字由用户提供,因此当它们通过 .toString 时会失去前导零。

有什么方法可以解决这个问题,以便当我截取每个元素的前两位时,它们最终的数组如下:

var twoDigitArray = ["10", "00", "30", "40", "50"];

?


3
你知道在 JavaScript 中,前导零代表八进制吗?也就是说,0012 等同于十进制的 10。 - Musa
你是如何从用户那里接收这些内容的?如果是通过输入或其他表单元素,那么它们会被视为字符串的起始部分。 - KevBot
前导零没有实际价值。你需要理解内部数值计算和基于字符串的显示格式之间的区别,后者只是一种装饰。所有这些解决方案都使用字符串来保留前导零是有原因的。作为程序员,你必须将用户输入存储在一个字符串中,以便根据需要进行转换。 - fnostro
只是为了强调@Musa所说的观点,var array = [016, 017, 018, 019, 020, 021]; console.log(array);会得到以下结果:[ 14, 15, 18, 19, 16, 17 ] - Andrew Willems
1个回答

0
你可以创建一个零填充函数。
function zeroFill(number, width) {
  width -= number.toString().length;
  if (width > 0) {
    return new Array(width + (/\./.test(number) ? 2 : 1)).join('0') + number;
  }
  return number.toString();
}

然后你可以对返回的数字进行切片。
number.slice(0, 2);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接