Javascript映射函数将值转换为十进制

Jay*_*abu 10 javascript jquery

我有这样的数组。

var elements=[5614,6619,7220,7320,7830,8220,0111,0112,0113,0142,0149]
Run Code Online (Sandbox Code Playgroud)

我将每个元素都转换为字符串,以便与jQuery自动完成一起使用。我正在使用.map函数来执行此操作。

elements = elements.map(String);
Run Code Online (Sandbox Code Playgroud)

输出是

["5614", "6619", "7220", "7320", "7830", "8220", "73", "74", "75", "98", "149"]
Run Code Online (Sandbox Code Playgroud)

函数将0111,0112,0113,0142所有这些值都作为Octal values并将其转换为decimal

我既不想谈话,也想保留零开头,我该怎么做,请帮忙。

T.J*_*der 12

函数将所有这些值0111,0112,0113,0142作为八进制值并将其转换为十进制。

不是这样做的功能,是这样的:

var elements=[5614,6619,7220,7320,7830,8220,0111,0112,0113,0142,0149]
Run Code Online (Sandbox Code Playgroud)

在宽松模式下,如果您以一个数字开头,0后跟一系列八进制数字,则该数字为八进制。这就是为什么010 === 8

var elements=[5614,6619,7220,7320,7830,8220,0111,0112,0113,0142,0149]
Run Code Online (Sandbox Code Playgroud)

天堂可以帮助我们,但是如果您0后面有一个非八进制十进制数字(89),则该数字为十进制,这就是为什么,011 === 09并且9 === 09为真:

console.log(010 === 8); // true
Run Code Online (Sandbox Code Playgroud)

解决方案是:

  1. 使用严格模式("use strict";)。在严格模式下,既不允许使用旧八进制文字(010)也不能使用旧的非八进制十进制文字(08)。(如果您需要编写八进制,则可以使用较新的0o10格式-数字八。)

  2. 不要在数字上写前导零(小数0之前的a 之前可能是a .

elements事后您无法修复(因为不可能知道,一旦它们是数字,哪些是错误地用八进制写的),则必须在创建它时进行修复,例如:

var elements=[5614,6619,7220,7320,7830,220,111,112,113,142,149]
Run Code Online (Sandbox Code Playgroud)

  • 哇。教育。 (3认同)