【问题标题】:How to preserve leading zero when making it into a string in Javascript?在Javascript中将其转换为字符串时如何保留前导零?
【发布时间】:2017-02-17 02:42:46
【问题描述】:

我有一个数字数组,其中一些有前导零。如何在不丢失前导零的情况下使它们成为字符串?

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

我查看了其他解决方案(JavaScript Number preserve leading 0JavaScript: Keeping the leading zero in a numberJavaScript Number preserve leading 0),他们都建议制作数字字符串。

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

我怎样才能解决这个问题,所以当我对每个元素的前 2 位进行切片时,它们的最终数组将是:

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

?

【问题讨论】:

  • 你知道js中的前导零表示八进制,即0012 === 10
  • 如何从用户那里收到这些信息?如果它在输入或其他表单元素中,那么它们会开始一个字符串。
  • 前导零没有重要价值。您需要了解用于计算的内部数值与作为装饰的基于字符串的显示格式之间的区别。所有这些解决方案都使用字符串来保留前导零是有原因的。您的用户输入必须存储在一个字符串中,作为程序员,您可以根据需要进行转换。
  • 只是为了强调@Musa 提出的观点,var array = [016, 017, 018, 019, 020, 021]; console.log(array); 产生以下结果:[ 14, 15, 18, 19, 16, 17 ]

标签: javascript arrays zero


【解决方案1】:

你可以创建一个零填充函数

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-19
    • 2015-07-20
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多