在JavaScript中验证十进制数的最干净,最有效的方法是什么?
奖励积分:
测试用例:
01. IsNumeric('-1') => true
02. IsNumeric('-1.5') => true
03. IsNumeric('0') => true
04. IsNumeric('0.42') => true
05. IsNumeric('.42') => true
06. IsNumeric('99,999') => false
07. IsNumeric('0x89f') => false
08. IsNumeric('#abcdef') => false
09. IsNumeric('1.2.3') => false
10. IsNumeric('') => false
11. IsNumeric('blah') => false
Run Code Online (Sandbox Code Playgroud) 如何删除这些都是属性undefined或null在JavaScript对象?
(问题类似于这个阵列)
我需要在Javascript中比较两个数值相等.值也可以NaN.我想出了这段代码:
if (val1 == val2 || isNaN(val1) && isNaN(val2)) ...
Run Code Online (Sandbox Code Playgroud)
这工作正常,但它看起来很臃肿.我想让它更简洁.有任何想法吗?
可能重复:
在Javascript中比较NaN值是否相等
谁能告诉我为什么这不起作用?
if(inbperr == NaN){
document.getElementById('inbclo').value = "N/A";
}
else{
document.getElementById('inbclo').value = "%" + inbperr;
}
Run Code Online (Sandbox Code Playgroud)
而不是返回一个百分比值或"N/A",就像我想要它返回"%NaN".
我有一个变量x,我想测试x是否设置为NaN.我怎么做?
我的第一直觉可能就是测试它,就像这样:
if (x === NaN) { ...
Run Code Online (Sandbox Code Playgroud)
傻兔子,不,这太容易了.NaN在SQL中就像NULL,它不等于任何东西,甚至本身.
但是看,有一个叫做的函数isNaN()- 也许会这样做!
不,据我所知,isNaN()完全没有价值.
例如,isNaN([""])正确返回false,但isNaN(["."])返回true.你不想知道我是如何了解这个缺陷的.
我该怎么做呢?
我目前面临一个问题,可能很简单,但我的研究中没有发现任何问题......
我想检查(在JavaScript中)变量是一个数字,如果它高于100或低于0.
我试过这个:
if ((returnValue > 100) || (returnValue < 0) || (typeof returnValue != 'number')) {
//not correct
} else {
// let's do some stuff here
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用...当我举例如数字50(这是好的),发生在"如果"而不是在"其他"按预期发生!
所以我做了 :
if ((returnValue > 100) || (returnValue < 0) || (isNaN(returnValue)))
Run Code Online (Sandbox Code Playgroud)
然后我注意到它完美有效!
我也知道我可以将它分成两部分,首先测试变量是否为数字,然后测试是否大于100或小于0,但这不是我目前正在寻找的;)
你能否解释一下为什么第一次尝试不起作用(和/或让它起作用)?
谢谢 !
检查给定变量的最佳方法是NaN与否?
(仅使用没有任何库(如Underscore)的纯Javascript)
我正在研究一个jQuery插件,我需要确保这个值是一个数字,或者只是一个数字的字符串.所以为了做到这一点,我做了以下代码,其中val一个变量可能是也可能不是数字.
if (typeof val !== 'number') {//if "val" isn't a number
if (typeof val === 'string' && parseInt(val) !== NaN) {//see if "val" is a string with only a number
val = parseInt(val);
}
}
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,同时测试,即使val是与文本字符串,它仍然会返回parseInt(val) !== NaN作为true.我后来使用Chrome控制台进行了测试,这就是我得到的:
如你所见,'asf'是Not-a-Number.但无论它返回什么地方true,它都应该返回false,无论它返回什么地方false,它都应该返回true.您还可以看到我测试过以确保NaN其实际上不是字符串.
上面你可以看到返回值是相同的,但这次它是正确的.
我错过了什么吗?或者我应该采用不同的方式做到这一点?
有最好的预防方法NaN吗?我有数字输入字段,每当我清除字段时,我得到NaN.
_amount: function(e) {
var value = parseInt(e.target.value);
var newValue = (value === NaN ? 0 : value); // Thought this could work
},
<input type="number" value={this.state.amount} onChange={this_amount} />
Run Code Online (Sandbox Code Playgroud)
现在在我的渲染中我有400 - this.state.amount.事情是,当我清除输入字段时,金额状态是null.怎么预防这个?有可能当我清除该字段时我得到零吗?假设我输入3然后清除该字段,NaN弹出.
谢谢
javascript ×9
nan ×4
numbers ×2
comparison ×1
equality ×1
if-statement ×1
math ×1
reactjs ×1
typeof ×1
validation ×1