纯 JavaScript:类似于 jQuery 的 isNumeric() 的函数

IT技术 javascript
2021-01-16 01:52:21

有没有像isNumeric纯 JavaScript那样的函数

我知道 jQuery 有这个函数来检查整数。

6个回答

没有isNumeric()类型的功能,但您可以添加自己的功能:

function isNumeric(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

注意:由于parseInt()不是检查数字的正确方法,因此不应使用它。

2021-03-17 01:52:21
@Matt 我的评论是针对评论的,答案中的注释指出parseInt这样做是错误的(然后继续使用parseFloat,这看起来并没有什么不同)。有趣的isFinite是,在几乎所有情况下,您都会得到自己想要的结果(除了空白字符串,出于某种原因返回true),所以parseIntvsparseFloat在这种情况下似乎无关紧要。我当然找不到该函数的单个输入parseInt有什么不同。
2021-03-20 01:52:21
小心。对于包含数字元素的单元素数组,此函数返回 true:isNumeric([0]) === trueisNumeric(['123']) === true
2021-03-24 01:52:21
此解决方案用于/取自 Jquery 库 $.isNumeric(obj) api.jquery.com/jquery.isnumeric
2021-03-26 01:52:21
不要使用此功能,它不适用于浮点数。有关isNumeric 实现它的想法,请参阅 jQuery's here。
2021-04-05 01:52:21

这应该有帮助:

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

非常好的链接:在 JavaScript 中验证十进制数字 - IsNumeric()

function IsNumeric(val) {
    return Number(parseFloat(val)) === val;
}
请解释代码。为什么不Number(val).toString() == val.toString()呢?
2021-03-23 01:52:21
如果 Val 未定义,则 .ToString 将抛出异常
2021-03-27 01:52:21
根据我的要求,我相信许多其他开发人员会要求它应该是 function IsNumeric(val) { return Number(val)==val; 以便在空字符串的情况下忽略。因为我只想验证是否输入了无效值。同时允许不是数字的空字符串。我认为基于场景的所有三个答案都很好
2021-03-30 01:52:21
我认为这个的更新版本实际上是这里最好的答案。我觉得奇怪的是它的赞成票最少。起初我认为如果用IsNumeric调用它可能会失败NaN,但由于 NaN 的怪癖,它不等于任何它实际上工作正常的东西。
2021-03-31 01:52:21
而且我认为你也可以放弃强制转换Number()并依靠双等于做一些转换: let isNumeric = (val) => parseFloat(val) == val;
2021-04-03 01:52:21

有一个 Javascript 函数isNaN可以做到这一点。

isNaN(90)
=>false

所以你可以检查数字

!isNaN(90)
=>true
我得到 isNaN(null) === false
2021-03-28 01:52:21
isNaN("null") === true; isNaN(null) === false; 对我也是
2021-03-29 01:52:21
isNaN(true) === false; isNaN(false) === false;
2021-04-03 01:52:21
除了 "" 和 true 和 false 不是一个数字......
2021-04-10 01:52:21
var str = 'test343',
    isNumeric = /^[-+]?(\d+|\d+\.\d*|\d*\.\d+)$/;

isNumeric.test(str);
好吧,根据用例,它实际上可能是这里的最佳答案。
2021-03-17 01:52:21
只要您修剪字符串并且不担心替代表示,这就是一个合理的答案。
2021-03-26 01:52:21
我更喜欢这个答案,如果您从字符串或用户输入中读取块,isNaN 和 parseInt 会导致不必要的误报,如“123abc”、“2e1”、“0x2”等。(甚至 jQuery.isNumeric将解析为真)。我会使用这样的东西function isNumeric(str) { return /^\d*\.{0,1}\d*$/.test(str); }
2021-03-28 01:52:21
好吧,根据用例,它实际上可能是这里最糟糕的答案。例如, this 返回false反对' 1'or '0x01',不考虑本地化......
2021-04-06 01:52:21