我有一个像这样的数组。
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
。
我不想进行此对话,也希望保留前导零,我该怎么做,请帮忙。
答案 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
后跟一个非八进制数字的数字(8
或9
),那是十进制,这就是{{ 1}}和011 === 09
是正确的:
9 === 09
解决方案是:
使用严格模式(console.log(011 === 09); // true
console.log(9 === 09); // true
)。在严格模式下,既不允许使用旧的八进制文字("use strict";
)也不能使用旧的非八进制十进制文字(010
)。 (如果您需要编写八进制,则可以使用较新的08
格式-数字八)。
不要在数字上写前导零(分数可能小于0o10
的{{1}}小于小数)
事实结束后,您将无法修复0
(因为不可能知道,一旦它们是数字,哪些是错误的八进制写法),则必须在创建时对其进行修复它,例如:
.