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后面有一个非八进制十进制数字(8或9),则该数字为十进制,这就是为什么,011 === 09并且9 === 09为真:
console.log(010 === 8); // trueRun Code Online (Sandbox Code Playgroud)
解决方案是:
使用严格模式("use strict";)。在严格模式下,既不允许使用旧八进制文字(010)也不能使用旧的非八进制十进制文字(08)。(如果您需要编写八进制,则可以使用较新的0o10格式-数字八。)
不要在数字上写前导零(小数0之前的a 之前可能是a .)
elements事后您无法修复(因为不可能知道,一旦它们是数字,哪些是错误地用八进制写的),则必须在创建它时进行修复,例如:
var elements=[5614,6619,7220,7320,7830,220,111,112,113,142,149]
Run Code Online (Sandbox Code Playgroud)