我有一个var a;
其值可以是NaN, null and any +ve/-ve number including 0.
我需要一个过滤掉所有值的条件,只有> = 0值才会在if条件下产生真值。
实现这一目标的最佳方法是什么,我不希望使用||
加入3个不同的条件
答案 0 :(得分:7)
typeof x == "number" && x >= 0
其工作原理如下:
null
- typeof null == "object"
因此表达式的第一部分返回false NaN
- typeof NaN == "number"
但NaN
不大于,小于或等于包含其自身的任何数字,因此表达式的第二部分返回false < / LI>
number
- 大于或等于零的任何其他number
表达式返回true 答案 1 :(得分:2)
答案 2 :(得分:1)
这似乎运作良好:
if (parseFloat(x) === Math.sqrt(x*x))...
测试:
isPositive = function(x) { return parseFloat(x) === Math.sqrt(x*x) }
a = [null, +"xx", -100, 0, 100]
a.forEach(function(x) { console.log(x, isPositive(x))})
答案 3 :(得分:1)
NaN
不是>= 0
,因此您需要做的唯一排除是null
:
if (a !== null && a >= 0) {
...
}
答案 4 :(得分:1)
过滤这些值的最佳解决方案是2条件,就像是;
if(a!=undefined && a>=0){
console.log('My variable is filtered out.')
}
我不确定但是没有单一的条件使用它。
答案 5 :(得分:1)
哦......但我确实找到了...... 它很简单。
parseInt(null)= NaN。
所以if(parseInt(a)>=0){}
会...... Yayyee
答案 6 :(得分:0)
由于您标记了jQuery,请查看$.isNumeric()
if($.isNumeric(a) && a >= 0)