有没有一种方法将NaN值转换为0而不使用if语句?例子:
if (isNaN(a)) a = 0;
每次检查我的变量都很烦人。
有没有一种方法将NaN值转换为0而不使用if语句?例子:
if (isNaN(a)) a = 0;
每次检查我的变量都很烦人。
当前回答
对任何事情都更简单有效的方法:
function getNum(val) {
val = +val || 0
return val;
}
...这将把a从任何“假”值转换为0。
“伪”值是:
假 零 未定义的 0 ""(空字符串) NaN(非数字)
其他回答
编写自己的方法,并在任何需要数值的地方使用它:
function getNum(val) {
if (isNaN(val)) {
return 0;
}
return val;
}
对任何事情都更简单有效的方法:
function getNum(val) {
val = +val || 0
return val;
}
...这将把a从任何“假”值转换为0。
“伪”值是:
假 零 未定义的 0 ""(空字符串) NaN(非数字)
你可以这样做:
a = a || 0
...这将把a从任何“假”值转换为0。
“伪”值是:
假 零 未定义的 0 ""(空字符串) NaN(非数字)
如果你喜欢,也可以这样:
a = a ? a : 0;
...这和上面的效果是一样的。
如果意图不仅仅是测试NaN,那么您可以做同样的事情,但首先要做toNumber转换。
a = +a || 0
它使用一元+运算符将a转换为数字。这有一个额外的好处,可以将数字字符串“123”转换为数字。
唯一意想不到的事情可能是,如果有人传递一个可以成功转换为数字的数组:
+['123'] // 123
这里我们有一个数组,它有一个成员是数字字符串。它将成功地转换为一个数字。
请试试这个简单的功能
var NanValue = function (entry) {
if(entry=="NaN") {
return 0.00;
} else {
return entry;
}
}
var i = [NaN, 1,2,3]; var j = i.map(i =>{返回isNaN(i) ?0: i}); console.log (j)