删除 NaN 值,javascript

Remove NaN value, javascript

索引 28:

如何删除这个 "NaN" 值。不能使用 isNaN 因为我想要字符串和数字。但不是 NaN

尝试过:

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

没有成功。

您可以将 typeof(检查这是一个数字)与 isNaN

结合使用

注意 typeof NaN returns "number"

typeof x === "number" && isNaN(x) 

另一种解决方案是使用 Number.isNaN,它不会尝试将参数转换为数字。所以只有参数为NaN

才会returntrue

您可以通过使用 Number.isNaN 来专门测试 NaN,这与普通的 isNaN 有细微的不同:它只有 returns 如果它的参数是一个数字(其值为 NaN)。换句话说,它不会尝试将字符串和其他值强制转换为数字。

演示:

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; };
}

您应该可以使用 Number.isNaN

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

我看过这个比较检查,不确定你是否可以让它为你工作。

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