索引28:
如何删除此“ NaN”值。不能使用isNaN
,因为我想要字符串和数字。但不是NaN
尝试:
typeof value === 'undefined'
value == null
没有成功。
答案 0 :(得分:4)
您可以将typeof
与isNaN
结合使用(检查数字)
请注意,typeof NaN
返回"number"
typeof x === "number" && isNaN(x)
另一种解决方案是使用Number.isNaN,它不会尝试将参数转换为数字。因此,仅当参数为true
NaN
答案 1 :(得分:3)
您可以使用Number.isNaN
来专门测试NaN
,这与普通isNaN
略有不同:仅当其参数为数字(其值为NaN)时,它才返回true。换句话说,它不会尝试将字符串和其他值强制转换为数字。
演示:
const values = [
12,
NaN,
"hello",
{ foo: "bar" },
NaN,
null,
undefined,
-3.14,
];
const filtered = values.filter(x => !Number.isNaN(x));
console.log(filtered);
Number.isNaN
是ECMAScript 6中的新增功能。除Internet Explorer之外,所有浏览器均支持。如果您需要支持IE,这里有一个简单的解决方法:
if (!Number.isNaN) {
Number.isNaN = function (x) { return x !== x; };
}
答案 2 :(得分:0)
答案 3 :(得分:0)
我已经看到了此比较检查,不确定是否可以使它适合您。
var nanValue = NaN;
if(nanValue !== nanValue) // Returns true!
alert('nanValue is NaN');