javascript - 如何从函数参数中的数字中删除前导零
问题描述
我有一个将数字/整数作为参数的函数,我试图在函数中执行任何其他操作之前从该数字中删除任何可能的前导零。但是,在我可以对函数参数执行某些操作之前,似乎已经以某种方式解析了带有前导零的数字。
到目前为止,我试过这个:
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)
我们可以自己做这个字符串转换,然后像这样以 10 为基数解析它:
let number = 0011
console.log(parseInt(number.toString(8),10))
您问题的另一部分询问您是否可以在输入八进制数时抛出。
'use strict'
这样做:
第六,ECMAScript 5 中的严格模式禁止八进制语法。八进制语法不是 ECMAScript 5 的一部分,但所有浏览器都支持它,方法是在八进制数前面加上零:
0644 === 420
和"\045" === "%"
. 在 ECMAScript 2015 中,通过在数字前加上 . 来支持八进制数"0o"
。IEvar a = 0o10; // ES2015: Octal
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode
推荐阅读
- javascript - 使用 jQuery w/Electron/NodeJS 匹配一组数字以替换为文本
- javascript - 出生日期验证在 JSP 中不起作用
- python - 如果列上的值包含某些正则表达式元素,则保留行
- go - 如何在我们的 go 程序中添加 kube-config 和使用 go-client
- javascript - 如何找到值发生变化的索引
- javascript - 从JS中的数组中选择匹配的值
- javascript - setState 后组件未重新渲染
- php - 如何使 mySQL 表行在 HTML 表单中可选?
- javascript - 如何使用计算获得vue js中的数组总和?
- python - 是否可以在 Python 中使用 map() 保存生成器通道的结果?