删除NaN值,javascript

时间:2019-05-10 22:05:29

标签: javascript nan

索引28:

enter image description here

如何删除此“ NaN”值。不能使用isNaN,因为我想要字符串和数字。但不是NaN

尝试:

typeof value === 'undefined'
value == null

没有成功。

4 个答案:

答案 0 :(得分:4)

您可以将typeofisNaN结合使用(检查数字)

请注意,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)

您应该可以使用Number.isNaN

console.log([1, "foo", NaN, "bar"].filter((x) => !Number.isNaN(x)))

答案 3 :(得分:0)

我已经看到了此比较检查,不确定是否可以使它适合您。

var nanValue = NaN;
if(nanValue !== nanValue) // Returns true!
    alert('nanValue is NaN');