Tag: 号码是数字的

一个改进的isNumeric()函数?

在一些项目中,我需要validation一些数据,并尽可能确定它是可以在math运算中使用的javascript数值。 jQuery和其他一些JavaScript库已经包含这样一个函数,通常称为isNumeric。 在stackoverflow上也有一个post被广泛接受为答案,这是前面提到的库所使用的相同的一般例程。 function isNumber(n) { return !isNaN(parseFloat(n)) && isFinite(n); } 作为我的第一篇文章,我无法在该主题中回复。 我在接受的职位上遇到的问题是,似乎有一些angular落案件影响了我正在做的一些工作,所以我做了一些改变,试图掩盖我遇到的问题。 首先,如果参数是一个长度为1的数组,则上面的代码将返回true,并且该单个元素的types被上述逻辑视为数字。 在我看来,如果它是一个数组,那么它不是数字。 为了缓解这个问题,我添加了一个检查从逻辑折扣数组 function isNumber(n) { return Object.prototype.toString.call(n) !== '[object Array]' &&!isNaN(parseFloat(n)) && isFinite(n); } 当然,你也可以使用Array.isArray而不是Object.prototype.toString.call(n) !== '[object Array]' 编辑:我已经改变了代码,以反映数组的一般性testing,或者你可以使用jquery $.isArray或原型Object.isArray 我的第二个问题是负hex整数文字string(“-0xA” – > -10)不计算为数字。 但是,正数hex整数string(“0xA” – > 10)将被视为数字。 我需要两个是有效的数字。 然后我修改了逻辑来考虑这一点。 function isNumber(n) { return Object.prototype.toString.call(n) !== '[object Array]' &&!isNaN(parseFloat(n)) && isFinite(n.toString().replace(/^-/, […]