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

时间:2019-06-13 10:27:44

标签: javascript jquery

我有一个像这样的数组。

var elements=[5614,6619,7220,7320,7830,8220,0111,0112,0113,0142,0149]

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

elements = elements.map(String);

输出为

["5614", "6619", "7220", "7320", "7830", "8220", "73", "74", "75", "98", "149"]

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

我不想进行此对话,也希望保留前导零,我该怎么做,请帮忙。

1 个答案:

答案 0 :(得分:11)

  

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

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

var elements=[5614,6619,7220,7320,7830,8220,0111,0112,0113,0142,0149]

在宽松模式下,如果以0开头的数字后面是一系列八进制数字,则为八进制。这就是010 === 8为真的原因:

console.log(010 === 8); // true

天堂帮助我们,但是如果您有一个0后跟一个非八进制数字的数字(89),那是十进制,这就是{{ 1}}和011 === 09是正确的:

9 === 09

解决方案是:

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

  2. 不要在数字上写前导零(分数可能小于0o10的{​​{1}}小于小数)

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

.