【问题标题】:JavaScript convert leading zero number to string or array?JavaScript将前导零数字转换为字符串或数组?
【发布时间】:2021-08-08 12:02:14
【问题描述】:

通常我们可以使用 toString() 方法或 concat '' 轻松转换数字字符串。 但是当数字像01010这样前导零时,我无法将它转换为像(01010).toString()这样的纯字符串

另外,我怎样才能将它转换为字符串? 编号为01010 预期输出'01010'

如何在 JavaScript 中将前导零数字转换为数组? 编号为01010 预期输出[0,1,0,1,0]

【问题讨论】:

  • 以零开头的数字将被解释为八进制。 01010(八进制)=520(十进制)。 JS 不会保留你最初给它的文字表示,只是十进制值。如果您需要使用"01010",则需要将其作为字符串传递。

标签: javascript arrays string


【解决方案1】:

您必须将radix(即给定数字的基本系统)放入Number.prototype.toString 方法中。默认情况下,任何以0 开头的数字都假定为八进制(以 8 为基数)。所以就这样吧:

(01010).toString(8)

【讨论】:

  • 在js中应该也可以找到未知数的基数,所以你可以去var x = (010101) /*any number*/; var y = FindRadixFunc(x); x.toString(y);
  • 不,没有办法找到数字的基数。所有数字都以完全相同的表示形式保存。您可以通过不同的文字来表达它们(例如,0520o520x2a0b101010 都是代表十进制 42same 值)但这不是信息一旦你有一个数值就保留。类似于x = 42; y = 40 + 2; 的做法,无法知道哪个不是文字而是来自数学表达式。
  • @VLAZ 即使在数学上我们也找不到基数,10 可以是二进制的 2 和十进制的 10。我意识到我的评论在技术上是不正确的。
  • (01010).toString(8) 的输出是 "1010" 我的预期输出应该是完全相同的,但是字符串类似于 '01010' For 0001010 预期输出 '0001010'
  • @webHasan 永远不会有超过一个前导零。你不能在 js 中遇到像 00000123 这样的数字,它总是以 0123 出现。
【解决方案2】:

由于前导 0,该数字被解析为 octal(以 8 为基数)。

  • 您可以使用 array#toString 转换为以 8 为基数,然后加回前导 0。
  • 从那里您可以使用array#split 转换为数组。

转换为 base 8 并重新添加前导 0:

"0" + 01010.toString(8) //> "01010"

将字符串拆分为数组项:

("0" + 01010.toString(8)).split("") //> ["0", "1", "0", "1", "0"]

演示:

function octalToArray(octal) {
  return ("0" + octal.toString(8)).split("")
}

console.log(octalToArray(01110))
console.log(octalToArray(01110010))

【讨论】:

  • 其实我正在寻找一种动态的方式。这样我就不需要在它之前添加零。我可以将其设为字符串是否有一个前导零或更多像010100010100001010
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 2022-01-23
  • 2019-07-08
相关资源
最近更新 更多