我有一个 var a;
它的值可以是NaN, null and any +ve/-ve number including 0.
我需要一个过滤掉 a 的所有值的条件,使得只有 >=0 的值在 if 条件下产生一个真值。
实现这一目标的最佳方法是什么,我不希望使用 3 个不同的条件加入使用||
我有一个 var a;
它的值可以是NaN, null and any +ve/-ve number including 0.
我需要一个过滤掉 a 的所有值的条件,使得只有 >=0 的值在 if 条件下产生一个真值。
实现这一目标的最佳方法是什么,我不希望使用 3 个不同的条件加入使用||
typeof x == "number" && x >= 0
这工作如下:
null
--typeof null == "object"
所以表达式的第一部分返回 falseNaN
--typeof NaN == "number"
但NaN
不大于、小于或等于包括其自身在内的任何数字,因此表达式的第二部分返回 falsenumber
-- 任何number
大于或等于 0 的表达式返回 true哦...但我实际上找到了答案 .. 它是如此简单。
parseInt(null) = NaN。
所以if(parseInt(a)>=0){}
会做......耶耶
这似乎运作良好:
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))})
NaN
不是>= 0
,所以你需要做的唯一排除是null
:
if (a !== null && a >= 0) {
...
}
我过滤掉这些值的最佳解决方案是使用 2 个条件,就像;
if(a!=undefined && a>=0){
console.log('My variable is filtered out.')
}
我不确定,但没有单一的条件用法可以做到这一点。
既然您标记了 jQuery,请查看$.isNumeric()
if($.isNumeric(a) && a >= 0)