Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从函数参数内的数字中删除前导零_Javascript_Parseint_Leading Zero - Fatal编程技术网

Javascript 如何从函数参数内的数字中删除前导零

Javascript 如何从函数参数内的数字中删除前导零,javascript,parseint,leading-zero,Javascript,Parseint,Leading Zero,我有一个函数,它把一个数字/整数作为一个参数,在函数中做任何其他事情之前,我试图从这个数字中删除任何可能的前导零。然而,带前导零的数字似乎在我可以使用函数参数做一些事情之前就已经以某种方式被解析了 到目前为止,我试过: function numToString(num){ var string = num.toString(); console.log(string); }; numToString(0011); // output is "9" numToString(111

我有一个函数,它把一个数字/整数作为一个参数,在函数中做任何其他事情之前,我试图从这个数字中删除任何可能的前导零。然而,带前导零的数字似乎在我可以使用函数参数做一些事情之前就已经以某种方式被解析了

到目前为止,我试过:

function numToString(num){
    var string = num.toString();
    console.log(string);
};

numToString(0011); // output is "9"
numToString(1111); // output is "1111"
function numToString(num, base){
    var string = num.toString();
    var parse = parseInt(string, base);
    console.log(parse);
};

numToString(0011, 10); // output is "9"
numToString(1111, 10); // output is "1111"
我也试过:

function numToString(num){
    var string = num.toString();
    console.log(string);
};

numToString(0011); // output is "9"
numToString(1111); // output is "1111"
function numToString(num, base){
    var string = num.toString();
    var parse = parseInt(string, base);
    console.log(parse);
};

numToString(0011, 10); // output is "9"
numToString(1111, 10); // output is "1111"
当然,第二个示例不起作用,因为
num.toString()
没有给出我的预期结果。我不想用字符串替换“num”函数参数,但要将其保留为数字


也许我遗漏了一些明显的东西,但我不太清楚它是什么。我意识到带前导零的数字被视为八进制数,但我想知道,当它有前导零时,我是否可以使用作为参数输入的数字(即,它不是来自变量,而是作为函数参数输入的).

发生这种情况的原因是,将数字前导零会使javascript以八进制格式解释数字。您无法更改此解释,但如果您从某处获取值作为字符串,则可以使用
parseInt(string,10)

我们可以自己做这个字符串转换,然后在base 10中解析它,如下所示:

let number=0011

log(parseInt(number.toString(8,10))
发生这种情况的原因是,将数字前导零会使javascript以八进制格式解释数字。您无法更改此解释,但如果您从某处获取值作为字符串,则可以使用
parseInt(string,10)

我们可以自己做这个字符串转换,然后在base 10中解析它,如下所示:

let number=0011

console.log(parseInt(number.toString(8,10))
如果
num
是一个数字,那么我永远不会想到前导零,但是我如何才能抓住给定的numToString(0011)示例呢?即使它直接传递到代码中的某个函数中?不-没有办法“捕获它”,因为它在代码看到值之前就已经发生了。处理它的唯一方法就是把它变成一个字符串。如果在一个数字前面加上任意数量的零(并且是有效的八进制),它将被转换为八进制。当您键入
numToString(0011)
时,Javascript解释器会立即看到
numToString(9)
。这从来都不是
0011
@Archer-“在代码看到值之前就已经发生了”我想这就是我想要的解释。我想我要么使用字符串,要么将函数记录为“请勿使用前导零”:。谢谢“我知道这个数字被视为八进制数,但我一直在寻找一种方法来处理实际输入,甚至在它被识别为八进制数之前。”-然后你必须自己解析JavaScript源代码…这在任何其他方式下都是不可能的。这不是数据,而是代码(然后变成数据,但只是以后)-这里发生的事情是在解析器级别发生的。如果
num
是一个数字,那么我永远不会想到前导零,但是我如何才能捕捉到给定的numToString(0011)示例?即使它直接传递到代码中某个函数中?否-没有办法“捕捉它”因为在代码看到值之前就已经发生了。处理它的唯一方法是使用字符串。如果在数字前面加上任意数量的零(并且是有效的八进制),它将被转换为八进制。当您键入
numToString(0011)
时,Javascript解释器会立即看到
numToString(9)
。这绝不是
0011
@Archer-“在您的代码看到值之前就已经发生了”我想这就是我想要的解释。我想我要么使用字符串,要么将函数记录为“不要使用前导零”:。谢谢!“我知道这个数字被视为八进制数,但我一直在寻找一种方法来处理实际输入,甚至在它被识别为八进制数之前。”-然后你必须自己解析JavaScript源代码…这在任何其他方式下都是不可能的。这不是数据,而是代码(然后变成数据,但只是以后)-这里发生的事情发生在解析器级别。问题似乎是“num”参数在我还没来得及使用它之前就已经被视为一个八进制数。我一直在寻找一种方法来绕过这个问题,并使用字面上输入的输入来处理它。@McVenco您从哪里传递它?它必须在某个地方被设置为一个数字。另请参阅我对这个问题的评论:“比如说,我想把它作为一个npm软件包(纯假设),其他人安装它并输入
numToString(0011)
-是否有办法捕获它,或者在发生错误时返回错误?"@McVenco好的,请看我的编辑。我认为最好在保存的位置修改它,因为这种方式要求您考虑间歇状态下的数字类型,但这将满足您的目的。这会有所帮助,但它仍然会转换任何输入的数字,带或不带前导零。也许我最好使用字符串,或者将函数记录为“请勿使用前导零”:)问题似乎是“num”参数在我还没来得及使用它之前就已经被视为一个八进制数。我一直在寻找一种方法来绕过这个问题,并使用字面上输入的输入来处理它。@McVenco您从哪里传递它?它必须在某个地方被设置为一个数字。另请参阅我对这个问题的评论:“比如说,我想把它作为一个npm包(纯假设),其他人安装它并输入
numToString(0011)
-有eve吗