首页 > 解决方案 > 如何从函数参数中的数字中删除前导零

问题描述

我有一个将数字/整数作为参数的函数,我试图在函数中执行任何其他操作之前从该数字中删除任何可能的前导零。但是,在我可以对函数参数执行某些操作之前,似乎已经以某种方式解析了带有前导零的数字。

到目前为止,我试过这个:

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”函数参数,而是将其保留为数字。

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

标签: javascriptparseintleading-zero

解决方案


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

我们可以自己做这个字符串转换,然后像这样以 10 为基数解析它:

let number = 0011
console.log(parseInt(number.toString(8),10))

您问题的另一部分询问您是否可以在输入八进制数时抛出。

'use strict'这样做:

第六,ECMAScript 5 中的严格模式禁止八进制语法。八进制语法不是 ECMAScript 5 的一部分,但所有浏览器都支持它,方法是在八进制数前面加上零:0644 === 420"\045" === "%". 在 ECMAScript 2015 中,通过在数字前加上 . 来支持八进制数"0o"。IE var a = 0o10; // ES2015: Octal

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode


推荐阅读